Как получить идентификатор winapi потока, который был создан с помощью стандартной библиотеки?

стандартная библиотека C++11 содержит <thread> что позволяет создавать потоки. Однако для некоторых функций api Windows требуется идентификатор (PostThreadMessage, а именно). Как я могу его получить?

замечание: std::thread::get_id() не работает:

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

e:documentskhookkhookerhook_runner.cpp(129): error C2664: 'PostThreadMessageW' : cannot convert parameter 1 from 'std::thread::id' to 'DWORD'

2 ответов


используйте функцию-член native_handle(). Он предоставляет собственный дескриптор потока. Тогда вы можете позвонить GetThreadId() на нем.


на thread::id класс только позволяет сравнение между ids и выход. Он не предоставляет средства для доступа к фактическому основному id. Вы можете попробовать вывести его на stringstream а затем разбор его обратно, я думаю.