1,486
社区成员
发帖
与我相关
我的任务
分享
Option Compare Text
Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long
Private Declare Function Process32First Lib "kernel32" (ByVal hSnapShot As Long, lppe As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapShot As Long, lppe As PROCESSENTRY32) As Long
Private Declare Function Module32First Lib "kernel32" (ByVal hSnapShot As Long, lppe As MODULEENTRY32) As Long
Private Declare Function Module32Next Lib "kernel32" (ByVal hSnapShot As Long, lppe As MODULEENTRY32) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function DebugActiveProcess Lib "kernel32" (ByVal dwProcessId As Long) As Long
Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
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 * 1024
End Type
Private Type MODULEENTRY32
dwSize As Long
th32ModuleID As Long
th32ProcessID As Long
GlblcntUsage As Long
ProccntUsage As Long
modBaseAddr As Byte
modBaseSize As Long
hModule As Long
szModule As String * 256
szExePath As String * 1024
End Type
Private Const TH32CS_SNAPPROCESS = &H2
Private Const TH32CS_SNAPHEAPLIST = &H1
Private Const TH32CS_SNAPTHREAD = &H4
Private Const TH32CS_SNAPMODULE = &H8
Private Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)
Private Const TH32CS_INHERIT = &H80000000
Public Function KillPIDProcess(ByVal strFile As String) As Boolean
On Error Resume Next
Dim my As PROCESSENTRY32
Dim l As Long
Dim mm As MODULEENTRY32
Dim lm As Long
Dim strGetPath As String
l = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
If l = 0 Then
Exit Function
End If
my.dwSize = Len(my)
If Process32First(l, my) Then
Do
'获得进程的标识符
lm = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, my.th32ProcessID)
If lm > 0 Then
mm.dwSize = Len(mm)
If Module32First(lm, mm) Then
strGetPath = UCase(mm.szExePath)
strGetPath = Mid$(strGetPath, 1, InStr(1, strGetPath, Chr(0)) - 1)
If strGetPath = strFile Then
msgbox mm.th32ProcessID
Exit Function
End If
End If
Call CloseHandle(lm)
End If
Loop Until (Process32Next(l, my) < 1)
End If
Call CloseHandle(l)
End Function