我想獲得一個進程的主線程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
其中,您假設郵件線程仍然存在。 –