提问者:小点点

处理UI自动化鼠标和键盘事件


是否可以使用UI自动化捕获任何应用程序的鼠标和键盘事件?

我试图创建一个UI自动化客户端应用程序,处理UI自动化事件,如焦点更改,菜单打开,菜单关闭等(UIA_ToolTipOpenedEventId,UIA_ToolTipClosedEventId,UIA_MenuOpenedEventId等)

当此类事件发生在任何目标应用程序上时,我的测试应用程序能够接收这些事件。但是,我无法捕获任何鼠标或键盘事件。

任何帮助将不胜感激。

参考链接:https://www.universalthread.com/ViewPageArticle.aspx?ID=199(我指的是本文中解释的方法。)


共2个答案

匿名用户

可能全局Windows挂钩很有用。请参阅本机C的MSDN参考。还有Python绑定pyHook(64位包可以在这里找到),我成功地用于本机GUI。对于.NET代码,可能WinEvents参考会更有用。

捕获事件后,您可以获取句柄或鼠标坐标,并使用UI自动化API中的ElementFromPoint或ElementFromHandle函数。

匿名用户

虽然这是一个古老的问题,但我不能停下来敦促在这里添加答案。

不,不可能通过UI自动化捕获任何鼠标或键盘事件。您已经获得了UI事件,我相信您最好的选择是在这些事件触发时检查鼠标位置,但这可能不适合您的场景。总结,UI自动化在这里帮不了你。