2012-07-20 49 views
9

Estoy tratando de enviar una pulsación de tecla (Ctrl + T) para el control del navegador. Pero, SendKeys.Send() mostró un error en la aplicación WPF ?? Mi pregunta esSendKeys.Send Método en la aplicación WPF

1) ¿Puedo usar este método en la aplicación WPF?

2) ¿Hay algún método alternativo para enviar la pulsación de teclas automática.

Gracias.

+0

¿Cuál es el error? –

Respuesta

13

SendKeys es parte del espacio de nombres System.Windows.Forms no hay un método equivalente en Wpf. No puede usar SendKeys.Send con WPF pero puede usar el método SendKeys.SendWait, si agrega System.Windows.Forms a las referencias de su proyecto. Su única otra opción sería llamar a Invoke SendInput.

Tenga en cuenta que estos dos métodos envían datos a la ventana actualmente activa.

+0

Gracias por su sugerencia :-) – Adnan

+0

@YasirAdnan Usted es bienvenido –

12

Encontré un blog post describiendo el uso de InputManager. Le permite simular eventos de teclado en 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

Ejemplo de código real agregado. – Katulus

+0

Esto funciona muy bien, pero ¿hay alguna forma de enviar algunos modificadores con la clave? (** Ctrl + V ** por ejemplo?) ¿Quizás puedas hacer que el KeyboardDevice piense que la tecla modificadora está presionada de alguna manera? Gracias! –

+0

Para tu información, esto solo coloca el evento clave en la aplicación wpf y no se puede usar para enviar pulsaciones de teclas a otras aplicaciones. – wischi

Cuestiones relacionadas