【问题标题】:Sending keystrokes to a program向程序发送击键
【发布时间】:2010-04-30 11:20:27
【问题描述】:

在窗口形式中,我制作了一个按钮,我试图让它发送 F1 到特定窗口(例如 FireFox、我的电脑等...)

我的问题是:

  • 如何通过窗口名称来实现? (例如“Mozilla Firefox”)
  • 如何通过进程名称执行此操作? (如firefox.exe)

【问题讨论】:

    标签: c# winforms sendkeys keystroke


    【解决方案1】:

    按窗口名称:

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

    【讨论】:

    • @Or Betzalel - 使用进程名称更新。
    • 用于社区文档。根据我的经验“IntPtr ptrFF = proc.Handle;”不会抓住正确的把手。您应该改用 proc.MainWindowHandle 。使用 Spy++ 确保这是正确的
    【解决方案2】:

    查看SendKeys 类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-22
      • 2018-09-19
      • 2013-06-20
      相关资源
      最近更新 更多