InputManager库是一个强大的工具,它允许开发者完全控制用户的输入。从跟踪(hooking)用户输入到模拟用户输入,这个库提供了一个简单易用的接口来发送和接收全局鼠标和键盘消息。它支持DirectX输入模拟,这意味着可以向任何DirectX游戏发送鼠标或键盘消息,并且游戏能够正确地注册这些消息。
在开发宏录制应用程序,即今天的Mouse Recorder Pro的过程中,需要找到一种方法来注册鼠标和键盘消息并追踪它们。经过Mouse Recorder Pro的多次版本更新以及自身编程技能的提升,创建了这个库以帮助他人。
这个库是用VB.NET编写的,并在许多系统上进行了测试(作为Mouse Recorder Pro商业应用程序的一部分)。键盘和鼠标消息是通过SendInput API发送的,这个API比其他API更灵活。使用SendInput API,应用程序可以以较低的级别(就像DirectX一样)发送鼠标和键盘消息。这允许在任何DirectX游戏中注册这些消息。
要使用这个库,首先需要在项目中添加对它的引用;从上面的链接下载InputManager库并解压。现在按照以下步骤操作:
由于无法在.NET Framework 4中使用类钩子(用于跟踪),所以如果使用的是.NET Framework 4,请通过转到项目属性并选择一个低于.NET Framework 4的版本来更改目标框架。
要跟踪用户鼠标和键盘消息,需要设置一个钩子。InputManager库使得这个过程非常简单。
以下是如何跟踪用户键盘消息的示例代码:
void Form_Load(object sender, EventArgs e) {
KeyboardHook.KeyDown += new KeyboardHook.KeyDownEventHandler(KeyboardHook_KeyDown);
KeyboardHook.KeyUp += new KeyboardHook.KeyUpEventHandler(KeyboardHook_KeyUp);
KeyboardHook.InstallHook();
}
void KeyboardHook_KeyDown(int vkCode) {
// 每当用户按下某个键时,应用程序将执行到这里
// 使用vkCode参数来确定哪个键被按下
}
void KeyboardHook_KeyUp(int vkCode) {
// 每当用户释放某个键时,应用程序将执行到这里
// 使用vkCode参数来确定哪个键被释放
}
要将这些键转换为字符串而不是虚拟键码,可以使用以下简单的技术:
string keyString = ((Keys)vkCode).ToString();
// 使用Keys枚举的ToString方法进行转换
要发送键盘消息(按键),使用InputManager库中的Keyboard类。
以下是如何发送按键消息的示例代码:
ExampleText.Focus();
// 设置焦点到示例文本框
// 使用按键发送"Hello"
Keyboard.KeyDown(Keys.H);
Keyboard.KeyUp(Keys.H);
Keyboard.KeyDown(Keys.E);
Keyboard.KeyUp(Keys.E);
Keyboard.KeyDown(Keys.L);
Keyboard.KeyUp(Keys.L);
Keyboard.KeyDown(Keys.L);
Keyboard.KeyUp(Keys.L);
Keyboard.KeyDown(Keys.O);
Keyboard.KeyUp(Keys.O);
要发送鼠标消息(鼠标按键消息,鼠标移动,滚轮滚动),使用InputManager库中的Mouse类。
以下是如何移动鼠标到某个特定位置的示例代码:
Mouse.Move(Point.X, Point.Y);
// 将鼠标移动到屏幕上的某个特定位置
要执行鼠标点击消息,使用Mouse.PressButton方法:
Mouse.PressButton(Mouse.MouseKeys.Left);
// 执行左键点击
要发送鼠标按钮按下或释放消息,使用Mouse.ButtonDown/Mouse.ButtonUp方法:
Mouse.ButtonDown(Mouse.MouseKeys.Left);
// 按住左键
Mouse.ButtonUp(Mouse.MouseKeys.Left);
// 释放左键
要向上或向下滚动,使用Mouse.Scroll方法:
Mouse.Scroll(Mouse.ScrollDirection.Down);
// 向下滚动
Mouse.Scroll(Mouse.ScrollDirection.Up);
// 向上滚动