Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.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++_Winapi - Fatal编程技术网

C++ 如何自动化窗口的上下文菜单

C++ 如何自动化窗口的上下文菜单,c++,winapi,C++,Winapi,我正在编写一种简单的脚本语言,用于自动化我自己程序的GUI。其中一条宏指令应在聚焦窗口的上下文菜单上操作: 上下文菜单“命令名” 因此,您可以发送一个WM_CONTEXTMENU,等待菜单打开(class#32768),使用MN_GETHMENU获取HMENU,然后在菜单项中搜索与“command name”匹配的命令,最后执行该命令 问题是,我不想只按其标识符编号执行命令。上下文菜单可能包含由IContextMenu生成的复杂项,因此我想以某种方式说服菜单关闭自身,就像用户手动选择所选命令一样

我正在编写一种简单的脚本语言,用于自动化我自己程序的GUI。其中一条宏指令应在聚焦窗口的上下文菜单上操作:

上下文菜单“命令名”

因此,您可以发送一个
WM_CONTEXTMENU
,等待菜单打开(class#32768),使用
MN_GETHMENU
获取
HMENU
,然后在菜单项中搜索与“command name”匹配的命令,最后执行该命令

问题是,我不想只按其标识符编号执行命令。上下文菜单可能包含由
IContextMenu
生成的复杂项,因此我想以某种方式说服菜单关闭自身,就像用户手动选择所选命令一样。这样
TrackPopupMenu
将获得标识符编号并继续执行


我尝试向菜单窗口(#32768)发送一个
WM_命令
,但没有任何效果。我想向菜单发送一系列箭头键,并最终返回VK_,以便它模拟菜单命令选择,但我想知道是否有人知道一种更简单/优雅的方式来完成这个自动化任务?

这个问题已经通过UI自动化解决了。从it的角度看,UI自动化并没有实现,甚至需要.NET。我对这种解决办法不感兴趣,不管它是什么。还有其他想法吗?如果你想让自己的生活变得艰难,那就去做吧!从.NET使用UI自动化要容易得多,但并不需要它。如果你想比Windows XP更老,你可以使用MSAA。谢谢雷蒙德(我每天都读你的博客)。看起来AccessibleObjectFromWindow可能是一个选项,但是我从一开始就没有想到这些途径,现在我的代码差不多完成了,所以模拟按键就可以了!