无法找到带有注入代码的第 3 方 QWidget QWidget::find(hwnd)

发布于 2024-10-10 05:50:51 字数 376 浏览 10 评论 0原文

我在第三方地址空间中有一个 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

谢谢。

I have a dll in a third party address space, hooked using a cbt hook. However, when I try and do this:

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

I know the widget is there, the hwnd is correct, I just can't seem to get a pointer to it.

According to everything that I have read this should work but it always return zero, can anybody suggest why?

c++ visual-studio-2008

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

泪之魂 2024-10-17 05:50:51

使用 QApplication 获取所有小部件的列表然后检查它们各自的窗口 ID 怎么样?

像这样的东西

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

What about using QApplication, getting a list of all the widgets then checking their respective window ids?

Something like

foreach (QWidget *widget, QApplication::allWidgets())
{
     if(widget->winId() == hwnd)
     {
         MessageBox(NULL, L"worked\n",NULL, NULL);
     }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文