0

我最近尝试编写代码来检查 Windows 中的线程是否处于活动状态。我搜索了这个论坛,发现了这样的讨论:如何检查进程或线程是否处于活动状态,或者在 C++ 中没有给出它们的 ID?.

我知道我可以使用 OpenThread API。但是,它似乎在我的代码中不起作用,如下所示。

DWORD WINAPI myThread( LPVOID lpParam )
{
    cout<<"child thread"<<endl;
    return 0;
}

int main(void)
{
    DWORD  lTldID = 0;
    HANDLE lTldHD = CreateThread(NULL, 0, myThread, 0, 0, &lTldID);

    WaitForSingleObject(lTldHD, INFINITE);
    HANDLE lHD = OpenThread(0x0040, FALSE, lTldID);
    return 1;
}

我希望 HANDLE lHD 应该为 NULL,因为线程“myThread”应该在调用 OpenThread() 时完成。但是,我总是得到 NOT NULL 值,例如 0x00000068。我不知道为什么会这样。任何想法?

谢谢,小莫

4

1 回答 1

0
BOOL WINAPI GetExitCodeThread(
  _In_  HANDLE  hThread,
  _Out_ LPDWORD lpExitCode
);

该函数立即返回。如果指定的线程没有终止并且函数成功,返回的状态是STILL_ACTIVE

于 2017-08-17T10:49:47.740 回答