Как получить HWND окна в котором рисует OpenGL?

326
15 июля 2022, 23:50

Мне нужно получить HWND или ID потока окна текущего процесса (не моего, я делаю DLL инъекцию) в котором OpenGL производит отрисовку чтобы установить локальный хук (хук сообщений потока окна) при помощи SetWindowsHookEx. Я пытался использовать wglGetCurrentDC чтобы потом получить HWND окна при помощи WindowFromDC но оно возвращает 0. Однако если установить трамплин на функцию SwapBuffers, тот DC который передаётся туда не равен 0 и при помощи него можно получить HWND. Ставить трамплин ради получения одного HWND такое себе. Я мог бы использовать перебор всех окон при помощи функции EnumWindows но это мне не подходит. Проблема заключается в том что нужное мне окно всегда имеет разное название, разное имя класса и не всегда является родительским. Есть ли ещё какие-то функции в OpenGL с помощью которых можно "добраться" до главного окна без использования трамплина? Может быть можно как-то получить список созданных DC вместо получения текущего или вывести существующие контексты и через них как-то выйти?

READ ALSO
C++ Builder. Редактирование свойств формы

C++ Builder. Редактирование свойств формы

Всем доброго дня! Работаю в C++ builder 10 и создаю пустую форму, которая по-умолчанию наследуется от класса TFormСтолкнулся с проблемой, корень которой...

272
Вычитать сообщения из потока байт

Вычитать сообщения из потока байт

Иметься поток байт, те

215
Теорема о разделяющей оси на C++

Теорема о разделяющей оси на C++

Я пытаюсь реализовать обработку столкновений с помощью SAT, но в интернете встречается лишь теория о отрывки практикиУ меня появилось два...

350
Ошибка разыменования указателя в С++

Ошибка разыменования указателя в С++

ЗдравствуйтеПочему когда я разыменовываю pointer вылетает ошибка?

288