C++发送击键疑难解答

发布于 2024-10-20 16:38:07 字数 924 浏览 6 评论 0原文

我使用的是 Windows 7 Ultimate 64 位。这是我在网上偶然发现的一个功能,以前使用过没有问题,但现在遇到了问题。无论我向它发送什么字符,它都只会发送一个正斜杠击键 /。 这是该函数:

void GenerateKey(int vk, BOOL bExtended)
{

    KEYBDINPUT  kb = {0};
    INPUT       Input = {0};

    /* Generate a "key down" */
    if (bExtended) { kb.dwFlags  = KEYEVENTF_EXTENDEDKEY; }
    kb.wVk  = vk;
    Input.type  = INPUT_KEYBOARD;
    Input.ki  = kb;
    SendInput(1, &Input, sizeof(Input));

    /* Generate a "key up" */
    ZeroMemory(&kb, sizeof(KEYBDINPUT));
    ZeroMemory(&Input, sizeof(INPUT));
    kb.dwFlags  =  KEYEVENTF_KEYUP;
    if (bExtended) { kb.dwFlags |= KEYEVENTF_EXTENDEDKEY; }
    kb.wVk = vk;
    Input.type = INPUT_KEYBOARD;
    Input.ki = kb;
    SendInput(1, &Input, sizeof(Input));

    return;
}

这是我如何调用它的: 生成密钥('x',FALSE);

但是,我得到的不是 x,而是 /。任何人都可以看到出了什么问题吗? 我使用的是 Visual Studio 2008。

I am using Windows 7 Ultimate 64-bit. This is a function I stumbled across online and used before with no issues but now I am having a problem. Regardless of what character I send to it, it will just send a forward slash keystroke /.
Here is the function:

void GenerateKey(int vk, BOOL bExtended)
{

    KEYBDINPUT  kb = {0};
    INPUT       Input = {0};

    /* Generate a "key down" */
    if (bExtended) { kb.dwFlags  = KEYEVENTF_EXTENDEDKEY; }
    kb.wVk  = vk;
    Input.type  = INPUT_KEYBOARD;
    Input.ki  = kb;
    SendInput(1, &Input, sizeof(Input));

    /* Generate a "key up" */
    ZeroMemory(&kb, sizeof(KEYBDINPUT));
    ZeroMemory(&Input, sizeof(INPUT));
    kb.dwFlags  =  KEYEVENTF_KEYUP;
    if (bExtended) { kb.dwFlags |= KEYEVENTF_EXTENDEDKEY; }
    kb.wVk = vk;
    Input.type = INPUT_KEYBOARD;
    Input.ki = kb;
    SendInput(1, &Input, sizeof(Input));

    return;
}

Here's how I am calling it:
GenerateKey('x', FALSE);

However, instead of an x I get a /. Can anyone see what's going wrong?
I am using Visual Studio 2008.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

笙痞 2024-10-27 16:38:07

KEYBDINPUT.wVk 是虚拟键码,而不是 ascii 字符。

http://msdn.microsoft.com/en-我们/library/ms646271(v=vs.85).aspx

KEYBDINPUT.wVk is a virtual key code, not an ascii char.

http://msdn.microsoft.com/en-us/library/ms646271(v=vs.85).aspx

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文