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é.

¿Fue útil?

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:

  1. Obtener instancia de clase de proceso devuelta por Process.Start
  2. Proceso de consulta.MainWindowHandle
  3. 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

Puedes enfocar la ventana (SetForegroundWindow WINAPI) y luego usar las formas de Windows SendKeys para enviar F4.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top