这是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);
}
更多详情:
- 代码在其他窗口生效
- 当我使用鼠标单击 qt 窗口时。我可以使用 spy++ 查看发布到 qt 窗口的 WM_LBUTTONDOWN 和 WM_LBUTTONUP 消息
- 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/