3

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

Automation.AddAutomationFocusChangedEventHandler(
   new AutomationFocusChangedEventHandler(OnAutomationFocusChanged));

当我检测到焦点改变时,我需要获取事件类型(左/右键单击或按下键盘)。是否有可能在方法 OnAutomationFocusChanged() 中找到这些值?

4

2 回答 2

2

不,这在 UI 自动化中是不可能的。像鼠标和键盘事件这样的低级交互不是 API 的一部分。API 是围绕更高级别的交互设计InvokeInvokePatternSelect例如SelectionItemPattern. 这些交互有一些事件,但没有检测按键或鼠标移动/单击/拖动的事件。

我知道获取这些事件的唯一方法是通过 windows api 中的全局挂钩。这个项目似乎是一个不错的起点。

于 2013-04-10T07:42:00.367 回答
2

参考以下代码:

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

另请参阅:

用c#移动鼠标

希望它有帮助。

于 2013-04-10T04:37:50.360 回答