C++ 发送击键疑难解答

标签 c++ keystrokes

我使用的是 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;
}

我是这样调用它的: GenerateKey('x', FALSE);

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

最佳答案

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

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

关于C++ 发送击键疑难解答,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5202118/

相关文章:

c++ - 在C++程序中使用Firefox网站信息

C++ 规则 5 - 自定义析构函数的段错误

c++ - 在用非托管 C 编写的应用程序中实现本地化的最佳解决方案/架构是什么?

c++ - 隐藏 constexpr 计算的最佳方法

java - 删除错误输入的字母时在 Eclipse 中自动打开内容辅助

python - 在Python中将击键发送到浏览器窗口

C# 检测击键并发送到后台窗口

c# - 捕获任何类型的击键(又名键盘记录器),最好是 c# .net,但任何类型都可以

c++ 将 char* 的 ascii 字符转换为 unix 文件名

java - 在 JTable 中按下向上或向下时调用例程