C#InputSimulator包装器 - 如何使用它?

时间:2011-07-07 13:34:37

标签: c# wrapper simulator sendinput

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

我已将程序集添加到我的项目中,但我还没有开始使用任何功能......

我该怎么办? 应该添加什么“使用”?

4 个答案:

答案 0 :(得分:4)

我相信你需要一个

Using WindowsInput; 

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

答案 1 :(得分:2)

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

  • 使用 user32.dll

  • 中的 SetForegroundWindow 将要发送密钥的程序带到前台
  • 使用SendKeys.SendWait Method将实际密钥发送到程序窗口

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

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
        }
    }
}

答案 2 :(得分:1)

我遇到了同样的问题,但我设法通过以下3个步骤来实现这个目标

  1. 将InputSimulator内容提取到像你一样明智的地方 项目网址

  2. 在Visual Studio中单击“项目” - >“添加引用”并浏览到     InputSimulator DLL文件

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

答案 3 :(得分:0)

虽然我无法告诉您可能需要使用的指令,但我不确定此工具是否允许您将输入发送到特定窗口。 您链接的页面的“历史记录”部分指出:

  

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

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