Pergunta

Esta questão já tem uma resposta aqui:

Eu estou começando um processo de um aplicativo do Windows. Ao pressionar um botão que eu quero para simular o pressionar de tecla F4 nesse processo. Como posso fazer isso?

[editar mais tarde] Eu não quero para simular a prensagem do F4 chave na minha forma, mas no processo que comecei.

Foi útil?

Solução

Para enviar a tecla F4 para outro processo, você terá que ativar esse processo

http://bytes.com/groups/net-c/ -outro processo 230693-ativar sugere:

  1. Obter instância de classe Processo retornado por Process.Start
  2. Consulta Process.MainWindowHandle
  3. Chamada não gerenciado função da API Win32 "ShowWindow" ou "SwitchToThisWindow"

Você pode, então, ser capaz de usar System.Windows.Forms.SendKeys.Send ( "{F4}") como Reed sugeriu para enviar as teclas para este processo

EDIT:

O exemplo de código abaixo é executado o bloco de notas e envia "ABC" para ele:

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");
            }
    }
}

Outras dicas

Você pode se concentrar a janela (SetForegroundWindow WINAPI) e, em seguida, usar Windows Forms SendKeys para enviar F4.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top