吉祥航空面试流程:VB列举windows所有进程句柄

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 14:45:36
VB列举windows所有进程句柄::::
我知道api函数 EnumWindows可以解决这个问题,但是不会用,高手请助我!!!

十分感谢!!!!

http://www.tiantiansoft.com/bbs/dispbbs.asp?BoardID=94&replyID=195382&id=112332&skin=0

我简单的看了一下那里,好象只能获得PID而并不是句柄,
VB有很多限制,我有点代码给你吧,

'进程操作API
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
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 ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow 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 * MAX_PATH
End Type

代码:
snap = CreateToolhelpSnapshot(TH32CS_SNAPall, 0) ':获得进程“快照”的句柄/
proc.dwSize = Len(proc)
theloop = ProcessFirst(snap, proc) ':获取第一个进程,并得到其返回值

While theloop <> 0 ':当返回值非零时继续获取下一个进程
If InStr(LCase(proc.szExeFile), "wow.exe") > 0 Then
AddofApp = proc.th32ProcessID
Exit Do
End If
theloop = ProcessNext(snap, proc)
Wend

CloseHandle snap