我尝试使用C#UIAutomation库创建测试工具应用程序。 示例代码是:
Automation.AddAutomationFocusChangedEventHandler(
new AutomationFocusChangedEventHandler(OnAutomationFocusChanged));
当我检测到焦点发生变化时,我需要获得事件类型(左/右键单击或键盘按下)。 是否可以这样做?如何在方法OnAutomationFocusChanged()中找到这些值?
答案 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);
}
另请参阅:
希望它有所帮助。
答案 1 :(得分:2)
不,UI自动化无法实现这一点。鼠标和键盘事件等低级别交互不是API的一部分。 API是围绕Invoke
中的InvokePattern
或Select
中的SelectionItemPattern
等高级别互动而设计的。这些交互有一些事件,但没有用于检测按键或鼠标移动/点击/拖动的事件。
我知道获取这些事件的唯一方法是通过windows api中的全局钩子。这project似乎是一个很好的起点。