Option Explicit
Private Declare Function CreateToolhelp32Snapshot Lib "kernel32.dll" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long '这个API返回的是长整型值,就是快照系统的后的句柄 ,,,最后一个参数0表示快照当前所有的进程
Private Declare Function Process32First Lib "kernel32" (ByVal hSnapshot As Long, ByRef lppe As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapshot As Long, ByRef lppe As PROCESSENTRY32) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Const TH32CS_SNAPPROCESS = &H2&
Const LANG_NEUTRAL = &H0
Const SUBLANG_DEFAULT = &H1
Const ERROR_BAD_USERNAME = 2202&
Private Type PROCESSENTRY32
dwSize As Long
cntUseage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
swFlags As Long
szExeFile As String * 1024
End Type
Private Sub Form_Load()
Dim Mysnapshot As Long
Dim Temp As Long
Mysnapshot = CreateToolhelp32Snapshot(2&, 0&)
If Mysnapshot <> -1 Then
MsgBox Mysnapshot
Else
MsgBox "error"
End If
Dim ProcessInfor As PROCESSENTRY32
Dim Ret As Long
ProcessInfor.dwSize = LenB(ProcessInfor)
If Process32First(Mysnapshot, ProcessInfor) <> 0 Then
List1.AddItem "第1个进程PID值是&H" & Hex(ProcessInfor.th32ProcessID) & vbTab & ProcessInfor.szExeFile
End If
Temp = 2
Do While Process32Next(Mysnapshot, ProcessInfor) <> 0
List1.AddItem "第" & Temp & "个进程PID值是&H" & Hex(ProcessInfor.th32ProcessID) & vbTab & ProcessInfor.szExeFile
Temp = Temp + 1
Loop
Ret = CloseHandle(Mysnapshot)
If Ret = 0 Then
MsgBox "Close handle Error"
Else
MsgBox "Close Handle succeeds"
End If
End Sub