Как получить идентификатор 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
класс только позволяет сравнение между id
s и выход. Он не предоставляет средства для доступа к фактическому основному id
. Вы можете попробовать вывести его на stringstream
а затем разбор его обратно, я думаю.