枚举进程的线程,大家看看我写的哪错了?
现在可以列出所有进程,但是不会列出线程,调用ThreadFirst返回的是0,
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 ThreadFirst Lib "kernel32" Alias "Thread32First" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function ThreadNext Lib "kernel32" Alias "Thread32Next" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
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 Const TH32CS_SNAPPROCESS = &H2
Private Const TH32CS_SNAPheaplist = &H1
Private Const TH32CS_SNAPthread = &H4
Private Const TH32CS_SNAPmodule = &H8
Private Sub Command1_Click()
Call process
End Sub
Private Sub Command2_Click()
Call thread(0)
End Sub
Private Sub List1_Click()
Call thread(List1.List(List1.ListIndex))
End Sub
Private Sub thread(pro As Long)
Dim MySnapHandle As Long
Dim threadInfo As PROCESSENTRY32
threadInfo.dwSize = Len(threadInfo)
MySnapHandle = CreateToolhelpSnapshot(TH32CS_SNAPthread, pro)
id = ThreadFirst(MySnapHandle, threadInfo)
List2.Clear
List2.AddItem (id)
Do While id <> 0
List2.AddItem (threadInfo.th32ProcessID)
id = ThreadNext(MySnapHandle, threadInfo)
List2.AddItem (id)
Loop
List2.AddItem (id)
CloseHandle MySnapHandle
End Sub
Private Sub process()
Dim MySnapHandle As Long
Dim ProcessInfo As PROCESSENTRY32
MySnapHandle = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0)
ProcessInfo.dwSize = Len(ProcessInfo)
List1.Clear
id = ProcessFirst(MySnapHandle, ProcessInfo)
Do While id <> 0
List1.AddItem (ProcessInfo.th32ProcessID)
List1.AddItem (ProcessInfo.szExeFile)
id = ProcessNext(MySnapHandle, ProcessInfo)
Loop
CloseHandle MySnapHandle
End Sub
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 ThreadFirst Lib "kernel32" Alias "Thread32First" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function ThreadNext Lib "kernel32" Alias "Thread32Next" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
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 Const TH32CS_SNAPPROCESS = &H2
Private Const TH32CS_SNAPheaplist = &H1
Private Const TH32CS_SNAPthread = &H4
Private Const TH32CS_SNAPmodule = &H8
Private Sub Command1_Click()
Call process
End Sub
Private Sub Command2_Click()
Call thread(0)
End Sub
Private Sub List1_Click()
Call thread(List1.List(List1.ListIndex))
End Sub
Private Sub thread(pro As Long)
Dim MySnapHandle As Long
Dim threadInfo As PROCESSENTRY32
threadInfo.dwSize = Len(threadInfo)
MySnapHandle = CreateToolhelpSnapshot(TH32CS_SNAPthread, pro)
id = ThreadFirst(MySnapHandle, threadInfo)
List2.Clear
List2.AddItem (id)
Do While id <> 0
List2.AddItem (threadInfo.th32ProcessID)
id = ThreadNext(MySnapHandle, threadInfo)
List2.AddItem (id)
Loop
List2.AddItem (id)
CloseHandle MySnapHandle
End Sub
Private Sub process()
Dim MySnapHandle As Long
Dim ProcessInfo As PROCESSENTRY32
MySnapHandle = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0)
ProcessInfo.dwSize = Len(ProcessInfo)
List1.Clear
id = ProcessFirst(MySnapHandle, ProcessInfo)
Do While id <> 0
List1.AddItem (ProcessInfo.th32ProcessID)
List1.AddItem (ProcessInfo.szExeFile)
id = ProcessNext(MySnapHandle, ProcessInfo)
Loop
CloseHandle MySnapHandle
End Sub
...全文
相关推荐
ZwQuerySystemInformation枚举进程线程的软件源码
ZwQuerySystemInformation枚举进程线程VB很实用的源码,精心挑选的精品源码
mfc 枚举进程 mfc 枚举进程
mfc 枚举进程 mfc 枚举进程 mfc 枚举进程 mfc 枚举进程 mfc 枚举进程
VB6.API.NtQuerySystemInformation.枚举进程和线程
使用未开放API函数NtQuerySystemInformation枚举系统进程和线程,VB6.0+XP2运行通过,网上C++写的比较多,对应结构改成vb的比较麻烦。希望对有需要的人有所帮助!
简易任务管理器(附带源码)可枚举、关闭进程、句柄、线程等
简易任务管理器 可枚举、关闭进程、句柄、线程等 附带易语言源码 效果图 http://bbs.eyuyan.com/UploadFile/2010-2/201021519265860568.gif
枚举 并且关闭 进程中的 线程的 源代码
枚举 并且关闭 进程中的 线程的 源代码 枚举 并且关闭 进程中的 线程的 源代码 枚举 并且关闭 进程中的 线程的 源代码 枚举 并且关闭 进程中的 线程的 源代码


API
