我想模拟外部程序的键盘点击。我尝试过 SendMessage、PostMessage、SendKeys,但它们不会将密钥发送到一个特定的程序。所以我想尝试 SendInput 并且我已经为SendInput下载了一个很好的包装器- http://inputsimulator.codeplex.com/
我已将程序集添加到我的项目中,但我还不能开始使用任何功能...
我必须做什么?我应该添加什么“使用”?
我相信你需要一个
Using WindowsInput;
如果不是这样,您可以在对象浏览器中查看它并查看命名空间。只需右键单击解决方案资源管理器中的引用,然后单击浏览。
您可以像这样模拟程序的键盘输入:
使用user32.dll中的SetForegroundWindow将要发送密钥的程序带到前台
使用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
}
}
}
我遇到了同样的问题,但我设法通过以下 3 个步骤来解决
将 InputSimulator 内容提取到某个合理的位置,例如您的项目 URL
在 Visual Studio 中单击 Project->Add Reference 并浏览到 InputSimulator DLL 文件
虽然我无法告诉您可能需要什么 using 指令,但我不确定此工具是否允许您将输入发送到特定窗口。您链接的页面的“历史”部分指出:
它最初是为在 WpfKB(WPF 触摸屏键盘)项目中使用而编写的,以模拟对活动窗口的真实键盘输入。
我知道这个问题的唯一解决方案是 SendMessage,也许你可以进一步解释问题出在哪里?