kill process/ end process of bluestacks

2019-05-10 17:49发布

I'm trying to make a program that will open and close bluestacks application. Close means totally exiting the application. Since even if you exit the bluestacks app the process will just restart. The processes I'm trying kill is:

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

When I manually kill the first process, the other process will close except for the 2~3 ones. It's kinda pain to kill four processes every time i close the application so i am creating this one. Here is my code

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

My problems are:

  1. my process checker wont work (it doesn't enable the close button when the process is already there)
  2. any of the process kill I have look up doesn't work (those are the ones I've made to comment in the code anyways)

1条回答
Rolldiameter
2楼-- · 2019-05-10 17:59

well after looking at it on different angle i finally found an idea to kill it via command prompt... and after reading a lot on the net how to do it i finally found an answer to make it work...

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
查看更多
登录 后发表回答