Не могу найти сторонний QWidget с внедренным кодом & QWidget :: find (hwnd) - PullRequest
1 голос
/ 05 января 2011

У меня есть dll в стороннем адресном пространстве, перехваченный с помощью ловушки cbt.Однако, когда я пытаюсь сделать это:

HWND hwnd = FindWindow(wct_target_wnd);
    QWidget* widget = QWidget::find(hwnd);
    if(widget != 0) 
    {
        MessageBox(NULL, L"worked\n",NULL, NULL);
    }

Я знаю, что виджет есть, hwnd верен, я просто не могу получить указатель на него.

Согласновсе, что я прочитал, должно работать, но оно всегда возвращает ноль, кто-нибудь может подсказать почему?

c ++ visual-studio-2008

Спасибо.

1 Ответ

0 голосов
/ 05 января 2011

Как насчет использования QApplication, получения списка всех виджетов и проверки их соответствующих идентификаторов окон?

Что-то вроде

foreach (QWidget *widget, QApplication::allWidgets())
{
     if(widget->winId() == hwnd)
     {
         MessageBox(NULL, L"worked\n",NULL, NULL);
     }
}
...