2013-04-10 8 views
3

Я пытаюсь создать приложение для тестового инструмента, используя библиотеку CIA 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

Черт возьми, но мне нужно определить событие мыши и клавиатуры вместо отправки события мыши и клавиатуры. –

2

Нет, это невозможно с автоматизацией пользовательского интерфейса. Низкоуровневые взаимодействия, такие как мыши и события клавиатуры, не являются частью API. API разработан вокруг взаимодействий более высокого уровня, таких как Invoke в InvokePattern или Select в SelectionItemPattern. Есть события для такого рода взаимодействий, но ничего для обнаружения нажатия клавиш или движения мыши/кликов/перетаскивания.

Единственный способ узнать эти события - это глобальные перехватчики в окнах api. Это project кажется, что это может быть хорошим местом для начала.

Смежные вопросы