2012-07-20 3 views
9

브라우저 제어를 위해 키 입력 (Ctrl + T)을 보내려고합니다. 그러나 SendKeys.Send()은 WPF 응용 프로그램에서 오류를 보였습니다 ?? 내 질문은WPF 응용 프로그램에서 SendKeys.Send 메서드

1) WPF 응용 프로그램에서이 방법을 사용할 수 있습니까?

2) 자동 키 입력을 보내는 다른 방법이 있습니까?

감사합니다.

+0

무엇이 오류입니까? –

답변

13

SendKeys는 System.Windows.Forms 네임 스페이스의 일부이며 Wpf에는 해당 메서드가 없습니다. WPF와 함께 SendKeys.Send를 사용할 수 없지만 프로젝트 참조에 System.Windows.Forms를 추가하면 SendKeys.SendWait 메서드를 사용할 수 있습니다. 유일한 옵션은 SendInput입니다.

두 방법 모두 현재 활성 창으로 데이터를 전송합니다.

+0

제안 해 주셔서 감사합니다 .-) – Adnan

+0

@ YasirAdnan 안녕하세요. –

12

InputManager의 사용을 설명하는 blog post이 발견되었습니다. WPF에서 키보드 이벤트를 시뮬레이션 할 수 있습니다.

/// <summary> 
/// Sends the specified key. 
/// </summary> 
/// <param name="key">The key.</param> 
public static void Send(Key key) 
{ 
    if (Keyboard.PrimaryDevice != null) 
    { 
    if (Keyboard.PrimaryDevice.ActiveSource != null) 
    { 
     var e = new KeyEventArgs(Keyboard.PrimaryDevice, Keyboard.PrimaryDevice.ActiveSource, 0, key) 
     { 
      RoutedEvent = Keyboard.KeyDownEvent 
     }; 
     InputManager.Current.ProcessInput(e); 

     // Note: Based on your requirements you may also need to fire events for: 
     // RoutedEvent = Keyboard.PreviewKeyDownEvent 
     // RoutedEvent = Keyboard.KeyUpEvent 
     // RoutedEvent = Keyboard.PreviewKeyUpEvent 
    } 
    } 
} 
+0

실제 코드 예제가 추가되었습니다. – Katulus

+0

이것은 훌륭하게 작동하지만 키가있는 수식어를 보내는 방법이 있습니까? (** Ctrl + V ** 예를 들어?) 아마도 수정 자 키가 어떻게 든 눌려 졌다고 KeyboardDevice에서 생각할 수 있습니까? 감사합니다. –

+0

FYI 이것은 wpf 응용 프로그램 자체에서 키 이벤트를 큐에 넣기 만하고 다른 응용 프로그램에 키 입력을 보내는 데 사용할 수 없습니다. – wischi

관련 문제