【发布时间】:2013-06-24 10:15:55
【问题描述】:
EnumProcess 或 CreateToolhelp32Snapshot 函数帮助我们获取进程信息,包括进程 ID。
但我想知道获取当前进程的线程 ID 列表。
DWORD GetMainThreadId(DWORD pId)
{
LPVOID lpThId;
_asm
{
mov eax, fs:[18h]
add eax, 36
mov [lpThId], eax
}
HANDLE hProcess = OpenProcess(PROCESS_VM_READ, FALSE, pId);
if(hProcess == NULL)
return NULL;
DWORD tId;
if(ReadProcessMemory(hProcess, lpThId, &tId, sizeof(tId), NULL) == FALSE)
{
CloseHandle(hProcess);
return NULL;
}
CloseHandle(hProcess);
return tId;
}
这段代码是为了获取主线程id,但我想获取其他线程模块并终止它,除了主线程。
有没有api函数或方法?
我的操作系统:Windows 7 Ultimate
开发工具:Visual Studio 2008
【问题讨论】:
-
什么,比如
GetCurrentThreadId? -
No 获取进程的线程列表。
-
那么你想要当前进程中所有线程的列表吗?并且在没有适当清理的情况下终止线程可能是危险的,如果它们正在做一些具有潜在破坏性的事情而你只是杀死它们怎么办?
标签: c++ windows winapi threadpool