Как мне справиться с запуском и остановкой BlueStacks из кода VB?
У меня есть приложение VB, которое я использую для автоматизации задач с BlueStacks. Это требует от меня возможности полностью выйти из BlueStacks и перезапустить его в своем коде.
Итак, у меня есть два вопроса:
Прямо сейчас я ищу все процессы BlueStacks по имени и вызову
process.Kill()
, Процесс будет перезапущен и убит много раз в течение длительного периода времени. Есть ли у этого недостаток?Если есть обратная сторона, могу ли я сказать BlueStacks закрыть себя, не останавливая процесс?
Спасибо заранее
2 ответа
Попробуйте это при уничтожении всех процессов, которые необходимо убить.. Я задаю тот же вопрос и прихожу к такому ответу
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().