6

32 ビット OS と 64 ビット OS の両方で実行される ac# アプリケーションがあります。私のアプリでは、solidworks がコンピューターにインストールされているかどうかをプログラムで確認するにはどうすればよいですか。レジストリ キーを読み取って確認できる場合は、パスを提供してください。 32 ビットと 64 ビットの両方で使用できます。他の方法で確認する方法があれば教えてください。

4

3 に答える 3

5

WMIは次のように使用できます

private static bool IsInstalled(string ProductName)
{

    bool rv = false;
    ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Product");
    ManagementObjectCollection Products = searcher.Get();
    if (Products.Count != 0)
    {
        foreach (ManagementObject product in Products)
        {
            if (product.Properties["Name"].Value.ToString() == ProductName)
            {
                rv = true;
            }
        }
    }
    return rv;           
}
于 2010-05-24T08:40:03.430 に答える
2

アプリケーションがインストールされている場合、SolidWorks を起動する必要がありますか? その場合、すべてのスタンドアロン (非アドイン) SolidWorks ツールを次のように起動します。

Public swApp As SldWorks.SldWorks

Function GetSolidWorks(ForceLaunch As Boolean) As Boolean
    If Not swApp Is Nothing Then
        SetSolidWorksVisibility()
        Return True
    Else
        Try
            swApp = GetObject(, "SldWorks.Application")
            If swApp Is Nothing Then Return False

            SetSolidWorksVisibility()
            Return True
        Catch ex As Exception
            If Not ForceLaunch Then Return False

            swApp = CreateObject("SldWorks.Application")
            If swApp Is Nothing Then Return False

            SetSolidWorksVisibility()

            'simple timer to wait for solidworks to repond
            System.Threading.Thread.Sleep(5000)

            Return True
        End Try
    End If
End Function

Private Sub SetSolidWorksVisibility()
    If Not swApp.Visible Then swApp.Visible = True
    If Not swApp.FrameState = SwConst.swWindowState_e.swWindowMaximized Then swApp.FrameState = SwConst.swWindowState_e.swWindowMaximized
End Sub
于 2015-07-31T15:08:58.193 に答える