我想获得一个进程的主线程ID,我看到有2种方法:GetWindowThreadProcessID和使用TIB获取线程ID有什么区别?
第一是使用线程ID = GetWindowThreadProcessId(HWND,NULL)这hWnd为我们从
要进程的句柄二是使用
_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;
ReadProcessMemory(hProcess, lpThId, &tId, sizeof(tId), NULL) == FALSE)
那么有什么区别?
'GetWindowThreadProcessId'不在进程句柄上运行。我想如果你阅读'GetWindowThreadProcessId'的文档,那么你会看到这两个代码的不同之处。您应该问的问题是:*我如何获得进程的主线程ID?* –
@David:Windows进程没有_main thread_的概念。同样,Windows进程也没有_main window_。所以唯一的问题'GetWindowThreadProcessId'可以回答:哪个线程拥有一个特定的窗口,以及 - 可选的 - 哪个进程拥有这个线程。 SieuTruc应该明确指出他正在努力解决的问题。你和他的问题都无法回答。 – IInspectable
其中,您假设邮件线程仍然存在。 –