如何使用UIAutomation获取鼠标和键盘事件

时间:2013-04-10 04:29:22

标签: c# user-interface

我尝试使用C#UIAutomation库创建测试工具应用程序。 示例代码是:

Automation.AddAutomationFocusChangedEventHandler(
   new AutomationFocusChangedEventHandler(OnAutomationFocusChanged));

当我检测到焦点发生变化时,我需要获得事件类型(左/右键单击或键盘按下)。 是否可以这样做?如何在方法OnAutomationFocusChanged()中找到这些值?

2 个答案:

答案 0 :(得分:2)

请参阅以下代码:

public static void RightClick(this AutomationElement element)
    {
     var ev = new MouseButtonEventArgs(Mouse.PrimaryDevice, 0, MouseButton.Right);
     ev.RoutedEvent = Mouse.MouseDownEvent;
     this.OnMouseDown(ev);
    }

另请参阅:

Move mouse with c#

希望它有所帮助。

答案 1 :(得分:2)

不,UI自动化无法实现这一点。鼠标和键盘事件等低级别交互不是API的一部分。 API是围绕Invoke中的InvokePatternSelect中的SelectionItemPattern等高级别互动而设计的。这些交互有一些事件,但没有用于检测按键或鼠标移动/点击/拖动的事件。

我知道获取这些事件的唯一方法是通过windows api中的全局钩子。这project似乎是一个很好的起点。