Отправка нажатий клавиш в программу - PullRequest
9 голосов
/ 30 апреля 2010

В форме окна я создал кнопку и пытаюсь заставить ее отправить F1 в определенное окно (например, FireFox, Мой компьютер и т. Д.)

Мои вопросы:

  • Как мне сделать это по имени окна? (например, "Mozilla Firefox")
  • Как мне сделать это по имени процесса? (например, firefox.exe)

Ответы [ 2 ]

14 голосов
/ 30 апреля 2010

По имени окна:

[DllImport("User32.dll")] 
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);  
[DllImport("User32.dll")] 
static extern int SetForegroundWindow(IntPtr hWnd);

IntPtr ptrFF = FindWindow(null, "Mozilla Firefox");
SetForegroundWindow(ptrFF);
SendKeys.SendWait("{F1}");

По названию процесса:

Process proc = Process.GetProcessesByName("firefox")[0];
IntPtr ptrFF = proc.Handle;
SetForegroundWindow(ptrFF);
SendKeys.SendWait("{F1}");
1 голос
/ 30 апреля 2010

Взгляните на класс SendKeys .

...