¿Cómo puedo enviar la clave F4 a un proceso en C #? [duplicar]
Pregunta
Esta pregunta ya tiene una respuesta aquí:
- Simulación de pulsación de tecla c # 7 respuestas
Estoy iniciando un proceso desde una aplicación de Windows. Cuando presiono un botón quiero simular la presión de la tecla F4 en ese proceso. ¿Cómo puedo hacer eso?
[Edición posterior] No quiero simular la presión de la tecla F4 en mi formulario, pero en el proceso comencé.
Solución
Para enviar la tecla F4 a otro proceso, deberá activar ese proceso
http://bytes.com/groups/net-c/ 230693-activar-otro-proceso sugiere:
- Obtener instancia de clase de proceso devuelta por Process.Start
- Proceso de consulta.MainWindowHandle
- Llamar a la función de la API Win32 no administrada " ShowWindow " o " SwitchToThisWindow "
Luego puedes usar System.Windows.Forms.SendKeys.Send (" {F4} ") como Reed sugirió para enviar las pulsaciones de tecla a este proceso
EDITAR:
El ejemplo de código siguiente ejecuta el bloc de notas y envía " ABC " a ella:
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace TextSendKeys
{
class Program
{
[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
static void Main(string[] args)
{
Process notepad = new Process();
notepad.StartInfo.FileName = @"C:\Windows\Notepad.exe";
notepad.Start();
// Need to wait for notepad to start
notepad.WaitForInputIdle();
IntPtr p = notepad.MainWindowHandle;
ShowWindow(p, 1);
SendKeys.SendWait("ABC");
}
}
}
Otros consejos
Puede usar System.Windows.Forms.SendKeys .Enviar (" {F4} ") ;
Puedes enfocar la ventana (SetForegroundWindow WINAPI) y luego usar las formas de Windows SendKeys para enviar F4.