【问题标题】:Handle UI Automation Mouse and Keyboard events处理 UI 自动化鼠标和键盘事件
【发布时间】:2016-04-06 09:23:53
【问题描述】:

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

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

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

我们将不胜感激。

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

提前致谢!!!

【问题讨论】:

    标签: ui-automation


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。但是由于限制,我们不能使用任何钩子。钩子肯定可以解决目的。但是,我们只需要使用UIAutomation API和UIAutomation接口来实现。
    【解决方案2】:

    虽然这是一个老问题,但我忍不住想在这里添加一个答案。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-22
      • 2019-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多