2011-05-13 6 views
6

Tengo una ventana de símbolo del sistema que ejecuta una pieza de software basada en web. Quiero crear un programa en C# que inserte comandos en la ventana del símbolo del sistema en ejecución.¿Inyectar comandos mediante el envío de pulsaciones de teclas a una ventana de comandos?

¿Alguna sugerencia?

Gracias, Paul.

+2

¿Qué quiere decir con "comandos de inyección"? ¿Pretendes modificar la aplicación en ejecución o simplemente enviar una entrada a la consola? –

+0

Simplemente envíe la entrada a la consola. – Paul

Respuesta

8

método rápido y sucio:

uso SetFocus para ajustar el foco a la ventana cmd, a continuación, utilizar SendInput para enviar pulsaciones de teclas a la ventana de cmd.

Usted puede utilizar this P/Invoke definición llamar SendInput de C#:

[DllImport("user32.dll", SetLastError=true)] 
static extern uint SendInput(uint nInputs, ref INPUT pInputs, int cbSize); 

y this uno para SetFocus

[DllImport("user32.dll")] 
static extern IntPtr SetFocus(IntPtr hWnd); 

el fin de obtener el identificador de ventana que se requiere para SetFocus, puede usar FindWindow o quizás obtener el proceso de cmd apropiado usando Process.GetProcessesByName y luego usar la propiedad MainWindowHandle.

+0

Impresionante, gracias por tu ayuda, comienza a cavar :-) – Paul

Cuestiones relacionadas