hSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0) '获得进程“快照”的句柄
Proc.dwSize = Len(Proc)
lPid = ProcessFirst(hSnapShot, Proc) '获取第一个进程的PROCESSENTRY32结构信息数据
i = 0
Do While lPid <> 0 '当返回值非零时继续获取下一个进程
hTSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPthread, Proc.th32ProcessID) '获得线程“快照”的句柄
'获取进程对应的线程句柄
lTid = ThreadFirst(hTSnapShot, Thre)
'获取线程对应的Window句柄
'Call EnumThreadWindows(Thre.th32ThreadID, AddressOf EnumThreadWndMain, 0&)
Call CloseHandle(hTSnapShot) '关闭线程“快照”句柄
i = i + 1
lPid = ProcessNext(hSnapShot, Proc) '循环获取下一个进程的PROCESSENTRY32结构信息数据
Loop
Call CloseHandle(hSnapShot) '关闭进程“快照”句柄
Proc.dwSize = Len(Proc)
lPid = ProcessFirst(hSnapShot, Proc) '获取第一个进程的PROCESSENTRY32结构信息数据
i = 0
Do While lPid <> 0 '当返回值非零时继续获取下一个进程
hTSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPthread, Proc.th32ProcessID) '获得线程“快照”的句柄
'获取进程对应的线程句柄
lTid = ThreadFirst(hTSnapShot, Thre)
'获取线程对应的Window句柄
'Call EnumThreadWindows(Thre.th32ThreadID, AddressOf EnumThreadWndMain, 0&)
Call CloseHandle(hTSnapShot) '关闭线程“快照”句柄
i = i + 1
lPid = ProcessNext(hSnapShot, Proc) '循环获取下一个进程的PROCESSENTRY32结构信息数据
Loop
Call CloseHandle(hSnapShot) '关闭进程“快照”句柄
lTid = ThreadFirst(hTSnapShot, Thre)
----------------------------------------------------
就是这句,返回值iTid始终为0
HANDLE snapshothandle=CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD,0);
THREADENTRY32 threadentry;
threadentry.dwSize=sizeof(THREADENTRY32);
BOOL finded=Thread32First(snapshothandle,&threadentry);
while(finded!=NULL)
{
//threadentry中返回线程信息
finded=Thread32Next(snapshothandle,&threadentry);
}
CloseHandle(snapshothandle);
自己翻译成vb吧。
我的mail是[email protected]