2015-06-13 3 views
2

Я пытаюсь создать программу, которая откроет и закроет приложение bluestacks. Закрыть означает полностью выход из приложения. Так как даже если вы выйдете из приложения bluestacks, процесс просто перезапустится. Процессы Я пытаюсь убить это:процесс уничтожения/завершение процесса bluestacks

  1. "HD-BlockDevice.exe"
  2. "HD-Agent.exe"
  3. "HD-LogRotatorService.exe"
  4. «HD-UpdaterService .exe "

Когда я вручную уничтожу первый процесс, другой процесс закроется, за исключением 2 ~ 3. Это просто боль, чтобы убить четыре процесса каждый раз, когда я закрываю приложение, поэтому я создаю этот. Вот мой код

Public Class Form1 
Dim p() As Process 
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    Timer_ProcessCheck.Start() 
End Sub 

Private Sub Timer_ProcessCheck_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer_ProcessCheck.Tick 
    p = Process.GetProcessesByName("HD-BlockDevice.exe") 
    If p.Count > 0 Then 
     ' Process is running 
     'Button_Close.Enabled = True 
    Else 
     ' Process is not running 
     'Button_Close.Enabled = False 
    End If 
End Sub 

Private Sub Button_Open_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Open.Click 
    Process.Start("C:\Program Files (x86)\BlueStacks\HD-StartLauncher.exe") 
End Sub 

Private Sub Button_Close_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Close.Click 
    'p = Process.GetProcessesByName("HD-BlockDevice.exe") 

    'p.kill() 
    'p.close() 

    'While p.Length > 0 
    'For i As Integer = p.Length - 1 To 0 Step -1 
    'p(i).CloseMainWindow() 

    'Next 

    'p = Process.GetProcessesByName("HD-BlockDevice.exe") 
    'End While 

    'Timer_ProcessKill.Start() 

End Sub 

Private Sub Timer_ProcessKill_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer_ProcessKill.Tick 
    For Each prog As Process In Process.GetProcesses 
     If prog.ProcessName = "HD-BlockDevice.exe" Then 
      prog.Kill() 
     End If 
    Next 
End Sub 
End Class 

Мои проблемы:

  1. мой процесс проверки не будет работать (он не позволяет кнопке закрытия, когда процесс уже есть)
  2. любого процесса убить я смотрю вверх не работает (те, которые я сделал, чтобы прокомментировать код в любом случае)
+0

ahm спасибо за редактирование моего сообщения ... i dont действительно понимаю, как поставить «туда» там, я надеюсь, ты сможешь научить меня ... спасибо заранее – pwalaako2

ответ

1

ну, посмотрев на него под разными углами, я наконец нашел идею чтобы убить его в командной строке ... и после прочтения много в сети, как это сделать, я наконец нашел ответ, чтобы заставить его работать ...

Public Class Form1 

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    Dim working_area As Rectangle = SystemInformation.WorkingArea 
    Dim newW As Integer = working_area.Left + working_area.Width - Me.Width 
    Dim newH As Integer = working_area.Top + working_area.Height - Me.Height 
    Me.Location = New Point(newW, newH) 
    Timer_ProcessCheck.Start() 
End Sub 

Private Sub Button_Open_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Open.Click 
    Process.Start("C:\Program Files (x86)\BlueStacks\HD-StartLauncher.exe") 
End Sub 

Private Sub Button_Close_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Close.Click 
    Timer_ProcessCheck.Stop() 
    Process.Start("cmd.exe", "/c taskkill /IM HD-BlockDevice.exe /f") 
    Process.Start("cmd.exe", "/c taskkill /IM HD-Agent.exe /f") 
    Process.Start("cmd.exe", "/c taskkill /IM HD-LogRotatorService.exe /f") 
    Process.Start("cmd.exe", "/c taskkill /IM HD-UpdaterService.exe /f") 
    Me.Close() 
End Sub 

Private Sub Timer_ProcessCheck_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer_ProcessCheck.Tick 
    Dim oProcess As New Process() 
    Dim oStartInfo As New ProcessStartInfo("tasklist") 
    oStartInfo.CreateNoWindow = True 
    oStartInfo.UseShellExecute = False 
    oStartInfo.RedirectStandardOutput = True 
    oProcess.StartInfo = oStartInfo 
    oProcess.Start() 

    Dim sOutput As String 
    Using oStreamReader As System.IO.StreamReader = oProcess.StandardOutput 
     sOutput = oStreamReader.ReadToEnd() 
    End Using 
    If sOutput.Contains("HD-BlockDevice.exe") Then 
     Button_Close.Enabled = True 
    Else 
     Button_Close.Enabled = False 
    End If 
End Sub 
End Class 

 Смежные вопросы

  • Нет связанных вопросов^_^