我尝试使用 C# UIAutomation 库创建测试工具应用程序。示例代码是:
Automation.AddAutomationFocusChangedEventHandler(
new AutomationFocusChangedEventHandler(OnAutomationFocusChanged));
当我检测到焦点改变时,我需要获取事件类型(左/右键单击或按下键盘)。是否有可能在方法 OnAutomationFocusChanged() 中找到这些值?
我尝试使用 C# UIAutomation 库创建测试工具应用程序。示例代码是:
Automation.AddAutomationFocusChangedEventHandler(
new AutomationFocusChangedEventHandler(OnAutomationFocusChanged));
当我检测到焦点改变时,我需要获取事件类型(左/右键单击或按下键盘)。是否有可能在方法 OnAutomationFocusChanged() 中找到这些值?
不,这在 UI 自动化中是不可能的。像鼠标和键盘事件这样的低级交互不是 API 的一部分。API 是围绕更高级别的交互设计Invoke
的InvokePattern
,Select
例如SelectionItemPattern
. 这些交互有一些事件,但没有检测按键或鼠标移动/单击/拖动的事件。
我知道获取这些事件的唯一方法是通过 windows api 中的全局挂钩。这个项目似乎是一个不错的起点。
参考以下代码:
public static void RightClick(this AutomationElement element)
{
var ev = new MouseButtonEventArgs(Mouse.PrimaryDevice, 0, MouseButton.Right);
ev.RoutedEvent = Mouse.MouseDownEvent;
this.OnMouseDown(ev);
}
另请参阅:
希望它有帮助。