-2

我想获取一个进程的主线程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)

那么有什么区别呢?

4

1 回答 1

2

从 MSDN GetWindowThreadProcessId

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

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

于 2013-01-05T12:12:00.040 回答