发送输入不发送字符或数字
SendInput doesn't send chars or numbers
我有这样的东西:
void generateKeybdEvent(int vk, bool extended) {
KEYBDINPUT kb = {0};
INPUT Input = {0};
if ( extended )
kb.dwFlags = KEYEVENTF_EXTENDEDKEY;
kb.wVk = vk;
Input.type = INPUT_KEYBOARD;
Input.ki = kb;
SendInput(1, &Input, sizeof(Input));
ZeroMemory(&kb, sizeof(KEYBDINPUT));
ZeroMemory(&Input, sizeof(INPUT));
kb.dwFlags = KEYEVENTF_KEYUP;
if ( extended )
kb.dwFlags |= KEYEVENTF_EXTENDEDKEY;
kb.wVk = vk;
Input.type = INPUT_KEYBOARD;
Input.ki = kb;
SendInput(1, &Input, sizeof(Input));
}
当我发送输入"A"、CapsLock、"A"时:
generateKeybdEvent ('A', false);
generateKeybdEvent (VK_CAPITAL, true);
generateKeybdEvent ('A', false);
唯一的效果是我的num锁切换。
为什么我不能向应用程序发送字符或数字?
注意,我使用的是带有波兰键盘布局的Windows7和带有MinGW的Qt。
VK_CAPITAL
不是扩展键
如果(vk >= 33 && vk <= 46) || (vk >= 91 && vk <= 93)
。
此外,这里可以省略ZeroMemory
,因此您的函数可以如下所示:
KEYBDINPUT kb = {0};
INPUT Input = {0};
if ( (vk >= 33 && vk <= 46) || (vk >= 91 && vk <= 93) )
kb.dwFlags = KEYEVENTF_EXTENDEDKEY;
kb.wVk = vk;
Input.type = INPUT_KEYBOARD;
Input.ki = kb;
SendInput(1, &Input, sizeof(Input));
kb.dwFlags |= KEYEVENTF_KEYUP;
SendInput(1, &Input, sizeof(Input));
最重要的是:问题可能不在这个函数中。我猜输入被发送了,但发送到了错误的窗口。使用SetFocus函数来引导此输入(在调用SendInput之前先调用它)。
您还应该检查SendInputpinvoke.net
相关文章:
- 从C++中的数字输入动态创建矩阵
- 为什么这个程序接受整数和字母数字输入并打印它们? C++ 中的 std::string 也采用整数值吗?
- 非数字输入检查
- C++和 XAML - 来自文本框的数字输入
- 该代码不会在其中显示任何数字输入.如何使它显示任何输入
- 如何从数字输入文件中查找最大数字
- C++ 将数字输入数组并输出
- 无法从字符串获取数字输入
- 输入数字输入到if语句中
- C++数字输入的输入验证
- 来自单个数字输入的Arduino读取脉冲宽度频率和占空比
- 如何区分数字输入和字母输入
- 为什么我的程序取消了更多的数字输入
- C++:运行程序时出现分段错误(将文件中的数字输入数组)
- C++:使用for循环允许用户将数字输入到数组中
- C++ - 如何将空格分隔的数字输入数组
- _wtoi返回零:输入零或非数字输入
- 数字输入的输入验证
- 为什么我随机生成的数字输入都是零
- 我需要让一个数字输入的用户输出单个数字使用c++