【发布时间】:2011-07-01 08:23:43
【问题描述】:
我想为游戏编写一个像热键助手这样的应用程序,例如,在魔兽争霸 3 中,我出于某种原因使用数字键盘键。是否可以通过按“X”键向操作系统发送“Numpad 1 keypressed”消息?我一直在尝试使用钩子来做到这一点,但我无法弄清楚。我希望我是清楚的。
我已将此类用于钩子:Global System Hooks in .NET。
只是我的代码是这样的:
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.
}
}
【问题讨论】: