Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 检测屏幕上的坐标是否可交互。_C++_C_Windows_Api - Fatal编程技术网

C++ 检测屏幕上的坐标是否可交互。

C++ 检测屏幕上的坐标是否可交互。,c++,c,windows,api,C++,C,Windows,Api,这是关于C/C++语言-> 是否有某种Windows API检查屏幕上的给定位置是否可单击?例如,左下角的windows图标、程序右上角的红色X,或者web浏览器搜索引擎中的“回车”按钮。 这听起来有点复杂,但也许通过IPC有办法做到这一点?谢谢 编辑:我所说的可点击,是指任何你可以关联或互动的东西。屏幕上几乎任何东西都是可点击的(除了像HTERROR、HTNOWHERE和HTTRANSPARENT这样点击测试的东西) 明智的方法是使用UI自动化/MSAA。调用WindowFromPoint、C

这是关于C/C++语言-> 是否有某种Windows API检查屏幕上的给定位置是否可单击?例如,左下角的windows图标、程序右上角的红色X,或者web浏览器搜索引擎中的“回车”按钮。 这听起来有点复杂,但也许通过IPC有办法做到这一点?谢谢


编辑:我所说的可点击,是指任何你可以关联或互动的东西。

屏幕上几乎任何东西都是可点击的(除了像
HTERROR
HTNOWHERE
HTTRANSPARENT
这样点击测试的东西)

明智的方法是使用UI自动化/MSAA。调用
WindowFromPoint
ChildWindowFromPoint
RealChildWindowFromPoint
获取HWND,然后调用获取接口并调用
accdedefaultaction


一个不太明智的选择是使用
WM\u NCHITTEST
找出鼠标的位置,并发送一些虚假的
WM\u nClutton*
消息。

定义“可点击”。本质上,任何你可以交互的东西。你可以从某个点检索窗口(
WindowFromPoint
),但无法判断该窗口是否有单击处理程序。使用
WindowFromPoint
检索窗口处理程序后,可以使用函数
GetClassName
检查其窗口类名,对于大多数默认的可交互对话框控件,它将是按钮、组合框、编辑、,等等。请参见此处的详细信息:MS Windows屏幕上的每一个东西都是一个窗口。每个窗口都接收发送给它的事件(例如鼠标单击)。某些窗口选择忽略某些事件。因此,如果鼠标在窗口上方,每个窗口都会被点击,有些选择做某事,有些选择不做。这给了我一些开始的东西!非常感谢。