如何获取使用标准库创建的线程的winapi id?

qdi*_*dii 8 c++ windows winapi multithreading c++11

C++ 11的标准库包含<thread>允许创建线程的标准库.但是,Windows api需要某些函数的ID(即PostThreadMessage).我怎么才能得到它?

评论:std::thread::get_id()似乎不起作用:

PostThreadMessage(m_thread->get_id(), WM_QUIT, 0, 0);

e:\documents\khook\khooker\hook_runner.cpp(129): error C2664: 'PostThreadMessageW' : cannot convert parameter 1 from 'std::thread::id' to 'DWORD'
Run Code Online (Sandbox Code Playgroud)

R. *_*des 12

使用成员函数native_handle().它提供了本机线程句柄.然后你可以打电话GetThreadId()给它.

  • 注意`native_handle()`为线程返回一个`HANDLE`(`void*`); 你还需要`GetThreadId()`从句柄中获取标识符来调用`PostThreadMessage()`. (5认同)