2013-06-05 18 views
1

我目前有下面的代碼,運行一個外部的虛擬應用程序(用Cameyo創建),當點擊運行按鈕時。我也有一個定時器,檢查第二次,看看過程(虛擬EXE程序)是否仍然打開。理論上,GetProcessByName應該找到任務管理器中列出的程序的權利?但它不!我甚至嘗試過使用GetProcessByName來殺死進程(單擊另一個按鈕),但進程並未被終止。VB.net GetProcess選項

難道是因爲我虛擬化了想讓GetProcessByName識別的程序嗎?因此任務管理器中任務的名稱不正確? 例

程序啓動:SmartDefrag.virtual.exe

它運行 的任務管理器顯示它作爲SmartDefrag.exe 使用GetProcessByName(「SmartDefrag.exe」)來禁用運行按鈕,如果過程SmartDefrag.exe運行。

不禁用運行按鈕。

我可以使用TITLE OF PROCESS嗎?或者每當過程打開時,PID是否都一樣?任何其他選項?

代碼:

Private Sub SMDFRunAppMainButton_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles SMDFRunAppMainButton.Click 
' LoadingSMDFMainButton.Visibility = Windows.Visibility.Visible 
Dim downloadlocation As String = (currentpath & "\1stAidApps\SMDF\SmartDefrag.virtual.exe") 
My.Settings.FileLoad = downloadlocation 
    Try 'Errors on Cancel 

     dp1Timer = New DispatcherTimer 
     dp1Timer.Interval = TimeSpan.FromMilliseconds(1000) 
     AddHandler dp1Timer.Tick, AddressOf TickMe1 
     dp1Timer.Start() 

     fileload = My.Settings.FileLoad 

     Process.Start(fileload) 
    Catch ex As Exception 
     MessageBox.Show("Failed to launch. Please try again.", "Launch Failed") 

    End Try 
End Sub 

Private Sub TickMe1() 
    Dim p() As Process 

    p = Process.GetProcessesByName("SmartDefrag.exe") 

    If p.Count > 0 Then 
     LoadingSMDFMainButton.Visibility = Windows.Visibility.Hidden 

     SMDFRunAppMainButton.IsEnabled = False 
    Else 
     SMDFRunAppMainButton.IsEnabled = True 
    End If 

End Sub 
+0

「虛擬」應用程序肯定需要「虛擬」殺手。請首先使用供應商的支持論壇來尋求幫助。 –

回答

1

GetProcessByName並不需要完整的路徑,但這個過程的,而 「名字」。這可能需要是GetProcessByName("SmartDefrag")

documentation for GetProcessByName

的進程名是這個過程中,如Outlook,不包括.exe擴展名或路徑的友好名稱。

+0

不錯!我會盡力!謝謝 –