我目前有以下代码在单击“运行”按钮时运行外部虚拟应用程序(使用 Cameyo 创建)。我还有一个计时器,它每秒检查一下进程(虚拟 exe 程序)是否仍然打开。理论上 GetProcessByName 应该找到任务管理器中列出的程序对吗?然而事实并非如此!我什至尝试使用 GetProcessByName 来终止进程(单击另一个按钮),但进程没有被终止。
难道是因为我虚拟化了我想GetProcessByName
识别的程序?因此任务管理器中的任务名称不正确?例子
程序启动:SmartDefrag.virtual.exe
它运行任务管理器将其显示为 SmartDefrag.exe 如果进程 SmartDefrag.exe 正在运行,请使用 GetProcessByName("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