c# InputSimulator如何使用

本文关键字:何使用 InputSimulator | 更新日期: 2023-09-27 18:01:22

我想模拟键盘点击外部程序。我试过SendMessage, PostMessage, SendKeys,但他们不发送密钥到一个特定的程序。所以我想尝试SendInput,我已经下载了一个很好的包装SendInput - http://inputsimulator.codeplex.com/

我已经将程序集添加到我的项目中,但我还不能开始使用任何函数…

我该怎么做?我应该添加什么"Using"?

c# InputSimulator如何使用

我相信你需要一个

Using WindowsInput; 

如果不是这样,您可以在Object Browser中查看它并查看名称空间。只需右键单击解决方案资源管理器中的引用,然后单击浏览。

您可以像这样模拟键盘输入程序:

  • 使用SetForegroundWindowuser32.dll

  • 将你想要发送密钥的程序带到前台
  • 使用SendKeys。SendWait发送实际密钥到程序窗口的方法

示例代码(测试前启动记事本):

using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace SendKeyboardInput
{
    public class SendKey
    {
        [DllImport("user32.dll")]
        public static extern bool SetForegroundWindow(IntPtr hWnd);
        public void Send()
        {
            System.Diagnostics.Process[] p = System.Diagnostics.Process.GetProcessesByName("notepad"); //search for process notepad
            if (p.Length > 0) //check if window was found
            {
                SetForegroundWindow(p[0].MainWindowHandle); //bring notepad to foreground
            }
            SendKeys.SendWait("a"); //send key "a" to notepad
        }
    }
}

我有同样的问题,但我设法做到了以下三个步骤

  1. 提取InputSimulator的内容在某个地方像你的项目的URL

  2. 在Visual Studio中单击Project->Add Reference并浏览到InputSimulator DLL文件

  3. 通过添加"using"将WindowsInput命名空间添加到项目中WindowsInput;"

虽然我不能告诉你你可能需要什么使用指令,我不确定这个工具将允许你发送输入到一个特定的窗口。链接页面的"历史记录"部分显示:

它最初是为WpfKB (WPF触摸屏键盘)项目编写的,用于模拟进入活动窗口的真实键盘输入。

我知道这个问题的唯一解决方案涉及SendMessage,也许你可以进一步解释问题在哪里?