Как мне справиться с запуском и остановкой BlueStacks из кода VB?

У меня есть приложение VB, которое я использую для автоматизации задач с BlueStacks. Это требует от меня возможности полностью выйти из BlueStacks и перезапустить его в своем коде.

Итак, у меня есть два вопроса:

  1. Прямо сейчас я ищу все процессы BlueStacks по имени и вызову process.Kill(), Процесс будет перезапущен и убит много раз в течение длительного периода времени. Есть ли у этого недостаток?

  2. Если есть обратная сторона, могу ли я сказать 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().

Другие вопросы по тегам