向程序发送击键

时间:2010-04-30 11:20:28

标签: c# winforms sendkeys keystroke

在窗口形式中,我创建了一个按钮,我试图将 F1 发送到特定窗口(例如FireFox,我的电脑等等)

我的问题是:

  • 我怎么用窗口的名字来做? (例如“Mozilla Firefox”)
  • 如何按流程名称执行此操作? (例如firefox.exe)

2 个答案:

答案 0 :(得分:14)

按窗口名称:

[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 :(得分:1)

查看SendKeys课程。