通过C#中的钩子重定向向下键?
我想编写一个类似游戏热键助手的应用程序,例如,在魔兽争霸3中,出于某种原因,我使用numpad键。是否可以通过按“X”键向操作系统发送“Numpad 1键按下”消息?我一直试图用钩子来做这件事,但我想不出来。我希望我是清楚的 我已将该类用于钩子: 简单地说,我的代码如下:通过C#中的钩子重定向向下键?,c#,.net,hook,keypress,C#,.net,Hook,Keypress,我想编写一个类似游戏热键助手的应用程序,例如,在魔兽争霸3中,出于某种原因,我使用numpad键。是否可以通过按“X”键向操作系统发送“Numpad 1键按下”消息?我一直试图用钩子来做这件事,但我想不出来。我希望我是清楚的 我已将该类用于钩子: 简单地说,我的代码如下: globalKeyboardHook hook = new globalKeyboardHook(); // A Global Hook private void btnHook_Click(object sender, E
globalKeyboardHook hook = new globalKeyboardHook(); // A Global Hook
private void btnHook_Click(object sender, EventArgs e)
{
hook.hook(); // Set the hook
hook.HookedKeys.Add(Keys.X); // Hook the X key
// i removed other hooks purify the code, six hooks total.
hook.KeyDown += new KeyEventHandler(hook_KeyDown); // add eventhandler
Program.hookActive = true; // inform the program that hook is active.
Guncelle(); // update form components (buttons enabling/disabling according to hook status etc.)
}
private void hook_KeyDown(object sender, KeyEventArgs e)
{
KeyEventArgs k = new KeyEventArgs(Keys.NoName);
switch (e.KeyCode)
{
case Keys.X:
k = new KeyEventArgs(Keys.NumPad1);
OnKeyDown(k);
break;
// i removed other cases to purify the code, six cases total.
}
}
是的,您可以使用WinAPI
SendInput()
或keybu事件()
调用。例如:
keybd_event(VK_NUMPAD1, 0, 0, 0)
谢谢你的回答,现在产生了两个不同的问题。它可以在记事本之类的应用程序上运行,但不能在魔兽之类的大型游戏上运行。第二个问题是,只要我按一次“X”键,numpad1键就会模拟4次。