WINAPI 光标在应用程序窗口上的点击位置

Posted

技术标签:

【中文标题】WINAPI 光标在应用程序窗口上的点击位置【英文标题】:WINAPI cursor click position on application window 【发布时间】:2015-05-08 14:20:48 【问题描述】:

我需要编写一个小程序,它可以知道用户在何处单击按钮或以某种方式在应用程序窗口上单击,无论应用程序窗口改变大小。

通过使用windows API,现在只能获取全局光标点击位置。

我从中国找到一个具有类似功能的小程序,使用 AHK 来实现它。也许作者使用这个(WinGetPos)见下图:

那么,任何windows api 或其他QT5、C++ 函数都可以帮助我获取应用程序窗口的光标点击位置。 (我在QT5开发)

在此处发布一些代码:

GetCursorPos (&screenpoint);
hwndFoundWindow = WindowFromPoint (screenpoint);
mp.DisplayInfoOnFoundWindow(QString::fromLocal8Bit("L"), hwndFoundWindow, pMouseStruct->pt.x, pMouseStruct->pt.y);

【问题讨论】:

你为什么要这样做? 想检测这个程序在实验室平台上使用的东西 【参考方案1】:

Windows API 中的ScreenToClient function 可用于将屏幕坐标转换为窗口(客户区)坐标。您需要知道应用程序窗口的 HWND。

【讨论】:

我今天早上尝试了这个功能,但看起来和全局光标点击位置一样。也许我用错了方法,我会尝试更多 @geraldlim 此函数旨在将全局光标位置转换为相对于窗口角的位置。

以上是关于WINAPI 光标在应用程序窗口上的点击位置的主要内容,如果未能解决你的问题,请参考以下文章

如何检查鼠标点击位置是否在所需的应用程序上?

C#。 WinApi。在窗口上绘制

如何在应用程序窗口外设置光标位置? (C ++)

如何在 Windows 窗体 C# 中伪造鼠标光标位置?

WinAPI - 钩住鼠标

C#窗口应用程序从另一个应用程序的光标位置获取单词