我有一个 VB 应用程序,用于通过 BlueStacks 自动执行任务。这要求我能够完全退出 BlueStacks 并在我的代码中重新启动它。
所以我有两个问题:
现在,我正在按名称查找所有 BlueStacks 进程并调用
process.Kill()
. 该进程将在很长一段时间内多次重新启动和终止。这有什么缺点吗?如果有缺点,有什么方法可以告诉 BlueStacks 关闭自己而不只是杀死它的进程?
提前谢谢。
我有一个 VB 应用程序,用于通过 BlueStacks 自动执行任务。这要求我能够完全退出 BlueStacks 并在我的代码中重新启动它。
所以我有两个问题:
现在,我正在按名称查找所有 BlueStacks 进程并调用process.Kill()
. 该进程将在很长一段时间内多次重新启动和终止。这有什么缺点吗?
如果有缺点,有什么方法可以告诉 BlueStacks 关闭自己而不只是杀死它的进程?
提前谢谢。
试试这个杀死所有需要被杀死的进程。我问了同样的问题并得到了这样的答案
Dim KillProcess As New Process
Dim KillStartInfo As New ProcessStartInfo("cmd.exe")
Dim KillProcessName(3) As String
KillProcessName(0) = "/c taskkill /IM HD-BlockDevice.exe /f"
KillProcessName(1) = "/c taskkill /IM HD-Agent.exe /f"
KillProcessName(2) = "/c taskkill /IM HD-LogRotatorService.exe /f"
KillProcessName(3) = "/c taskkill /IM HD-UpdaterService.exe /f"
For i = 0 To 3 Step 1
With KillStartInfo
.Arguments = KillProcessName(i)
.CreateNoWindow = True
.UseShellExecute = False
KillProcess.StartInfo = KillStartInfo
KillProcess.Start()
KillProcess.WaitForExit()
End With
Next
*我从未使用过 BlueStacks。
关于#1 - 是的......并且没有; 我们不知道。Process.Kill() 以极端偏见终止,不允许应用程序正确关闭并可能正确清理其资源。这真的发生了吗?......我们不知道。不同的应用程序会做出不同的反应……这取决于它们是如何在后台编写的。使用 Kill() 总是有可能完全没有负面影响。反之亦然。
关于#2 - 如果应用程序具有用户界面,则Process.CloseMainWindow()是关闭它的首选方法。这将向主窗口发送一条 WM_CLOSE 消息,理论上这应该允许大多数应用程序正确关闭并清理它们的资源。如果 Process.CloseMainWindow() 不适用于您的情况,那么您将被 Process.Kill() 困住。