c++ - postmessage到qt窗口不生效

标签 c++ qt postmessage

这是windows平台的问题。我的 Windows 是 win 10 64 位。 我有一个 qt 应用程序,可以通过 findwindow 找到窗口。然后我使用来自另一个进程的postmessage来模拟鼠标在qt窗口上的点击,但这并没有生效。我的代码如下。

void SimuClick(HWND hwnd, int x, int y)
{
    LPARAM point = MAKELPARAM(x, y);
    ::PostMessage(hwnd, WM_LBUTTONDOWN, MK_LBUTTON, point);
    ::PostMessage(hwnd, WM_LBUTTONUP, 0, point);
}

更多详情:

  1. 代码在其他窗口生效
  2. 当我使用鼠标单击 qt 窗口时。我可以使用 spy++ 查看发布到 qt 窗口的 WM_LBUTTONDOWN 和 WM_LBUTTONUP 消息
  3. qt 窗口有 WS_POPUP|WS_CAPTION|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN|WS_SYSMENU|WS_THICKFRAME|WS_MINIMIZEBOX 风格

最佳答案

最后,我发现了问题所在。 Windows UIPI 限制阻止我的消息发布到目标进程,因为目标进程具有比我更高的权限。我应该在链接步骤的 list 中将 uiAccess 设置为 true。

关于c++ - postmessage到qt窗口不生效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48225904/

相关文章:

javascript - 如何解决来自 YouTube 嵌入的 'Failed to execute ' postMessage' on 'DOMWindow' ' 错误

c++ - 如何通知系统创建新设备?

c++ - 特定大小的数组在其初始化的函数之外使用

c++ std::map<std::string, int> 与std::string_view一起使用

c++ - 使用 C++ 和 QML 的 Qt 应用程序

c# - 用于将来在当前线程上执行代码的 PostMessage 的 C# 等效项是什么?

c++ - 对 RTSP 服务器进行编程以将 RTP 发送给第三方

c++ - 如何将 QMenu 项目移动到 QMenuBar 的右上角

c++ - C2665 : 'QObject::connect' : none of the 3 overloads could convert all the arguments types

javascript - 访问和修改 iframe 内容,postMessage 与 jQuery.contents()