GetWindowThreadProcessID与使用TIB获取线程ID有什么区别?

时间:2013-01-05 12:07:37

标签: windows winapi

我想获得一个进程的主线程ID,我看到有两种方法:

首先使用threadID = 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)

那有什么区别?

1 个答案:

答案 0 :(得分:2)

来自MSDN GetWindowThreadProcessId

  

检索创建指定窗口的线程的标识符,以及(可选)创建窗口的进程的标识符。

它与TIB无关。不同之处在于这两个是不同的标识符,可能是巧合的。