Search code examples
processkillbluestacks

kill process/ end process of bluestacks


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)

Solution

  • 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