如何在Qt中的WinOS窗口中安装eventFilter?

时间:2014-07-04 07:12:38

标签: qt

我有一个WinOS窗口的句柄,例如。 Qt.I中的 Internet Explorer 窗口以这种方式完成:m_hwndUnderCursor= WindowFromPoint(curPoint);

如何成功将{event>成功安装到 m_hwndUnderCursor ,以便我可以在没有 HOOK 的情况下在Qt中观看 m_hwndUnderCursor 技术

我知道因为 m_hwndUnderCursor 指向WinOS窗口的指针所以QWidget :: find(m_hwndUnderCursor)总是返回NULL。有没有办法让它成功?

1 个答案:

答案 0 :(得分:3)

快速回答是:你不能这样做。

更详细的答案:

QObject::installEventFilter()的工作原理基于Qt的事件引擎(事件循环,事件传播等)。这是Qt的内部资源,在Qt应用程序之外的其他窗口中无法使用。它仅适用于您从{。}}调用的同一应用程序的一部分的窗口。

出于类似的原因,如果您尝试查找非Qt窗口,installEventFilter()将永远不会在结果中显示QWidget::find()。它仅适用于在Qt应用程序中创建的窗口。另请参阅:Can QWidget::find find widgets from a different process?

您必须使用本机Windows API处理它。