Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过C#中的钩子重定向向下键?_C#_.net_Hook_Keypress - Fatal编程技术网

通过C#中的钩子重定向向下键?

通过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

我想编写一个类似游戏热键助手的应用程序,例如,在魔兽争霸3中,出于某种原因,我使用numpad键。是否可以通过按“X”键向操作系统发送“Numpad 1键按下”消息?我一直试图用钩子来做这件事,但我想不出来。我希望我是清楚的

我已将该类用于钩子:

简单地说,我的代码如下:

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次。