VB 已知进程标识符PID,如何结束进程?

解决方案 »

  1.   

    OpenProcess
    AdjustTokenPrivileges
    TerminateProcess
    CloseHandle
      

  2.   


    '一行代码结束进程:
    'PID=2009
    shell "ntsd -c q -p 2009 ",vbHide参考:http://www.x5dj.com/Blog/00379474/00403638.shtml
      

  3.   

    shell "ntsd -c q -p 2009 ",vbHide
      

  4.   

    API代码:
      Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
      Private Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
      Private Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
      Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
      Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
      Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
      Const MAX_PATH     As Integer = 260
      Private Type PROCESSENTRY32
            dwSize   As Long
            cntUsage   As Long
            th32ProcessID   As Long
            th32DefaultHeapID   As Long
            th32ModuleID   As Long
            cntThreads   As Long
            th32ParentProcessID   As Long
            pcPriClassBase   As Long
            dwFlags   As Long
            szExeFile   As String * MAX_PATH
      End Type
      Const TH32CS_SNAPheaplist = &H1
      Const TH32CS_SNAPPROCESS = &H2
      Const TH32CS_SNAPthread = &H4
      Const TH32CS_SNAPmodule = &H8
      Const TH32CS_SNAPall = TH32CS_SNAPPROCESS + TH32CS_SNAPheaplist + TH32CS_SNAPthread + TH32CS_SNAPmodule
    调用代码:
    Private Sub Command2_Click()
    If PID <> "" Then
    Dim lPHand     As Long, TMBack       As Long
    lPHand = Val("&H" & PID)
    lPHand = OpenProcess(1&, True, lPHand)             '获取进程句柄
    TMBack = TerminateProcess(lPHand, 0&)         '关闭进程
    If TMBack <> 0 Then
    Else
        MsgBox "拒绝访问!", vbCritical, "错误"
    End If
    CloseHandle lPHand
    end if
    End Sub
      

  5.   

    shell "cmd /c taskkill /f /t /pid " & Pid , vbhide
      

  6.   

    Shell "ntsd -c q -pn 360tray.exe" 我是这样去杀360的、但是在XP系统下好像不行!!!