2013-04-10 196 views
3

我嘗試使用C#UIAutomation庫創建測試工具應用程序。 示例代碼是:如何使用UIAutomation獲取鼠標和鍵盤事件

Automation.AddAutomationFocusChangedEventHandler(
    new AutomationFocusChangedEventHandler(OnAutomationFocusChanged)); 

當我發現焦點變了,我需要得到事件的類型(左/右鍵點擊或鍵盤按下)。 是否有可能做到這一點我如何在方法OnAutomationFocusChanged()中找到這些值?

回答

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#

希望它有幫助。

+0

THANKs,但我需要檢測鼠標和鍵盤事件,而不是發送鼠標和鍵盤事件。 – 2013-04-10 05:02:45

2

不,這在UI自動化中不可行。像鼠標和鍵盤事件這樣的低級交互不是API的一部分。該API是圍繞更高級別的交互設計的,如Invoke,或Select中的SelectionItemPattern。有這些交互的事件,但沒有檢測到按鍵或鼠標移動/點擊/拖動。

我知道獲取這些事件的唯一方法是通過windows api中的全局鉤子。這project好像它可能是一個很好的開始。

相關問題