2015-06-13 192 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谢谢编辑我的帖子...我没有真正理解如何把“进入”那里,我希望你能教我...提前感谢 – 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