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