Como posso enviar a tecla F4 para um processo em C #? [duplicado]
Pergunta
Esta questão já tem uma resposta aqui:
- Simulando Key Imprensa c # 7 respostas
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.
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:
- Obter instância de classe Processo retornado por Process.Start
- Consulta Process.MainWindowHandle
- 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 usar System.Windows.Forms.SendKeys .send ( "{F4}") ;
Você pode se concentrar a janela (SetForegroundWindow WINAPI) e, em seguida, usar Windows Forms SendKeys para enviar F4.