发送密钥功能输入密钥问题
Sendkey Function Enter Key Issue
这就是我的问题,我一直在尝试用sendinput()函数模拟各种关键事件,我什至编写了函数来模拟复杂的关键事件,如winkey+D,alt+f4等,无论如何一切正常,直到我决定尝试使用虚拟键代码返回 Enter键 又名返回 VK_RETURN 这个不错的 msdn VK 代码列表提供,问题是它不起作用
现在,我猜这个回车键可能有3个问题,
-
回车的虚拟键码和PC键盘实际使用的值不一样
-
代码错别字错误,错误电话等;我不太确定,因为发送输入适用于到目前为止测试的其余键
回车、回 车、回车或任何键盘键的超级明星都不像其他按钮那样工作,所以我的代码不适合它
注意:如果是 1 ,您能否启发一下如何以编程方式为给定按钮获取正确的键码值,而无需依赖 MSDN VK 列表等静态资源
无论如何,这是我的片段
我做了一个这样的输入结构,并将其分配为键盘输入
INPUT Keybord;
Keybord.type = INPUT_KEYBOARD;
Keybord.ki.wScan = 0;
Keybord.ki.time = 0;
Keybord.ki.dwExtraInfo = 0;
在这里我分配一个按钮VK,我使用一个结构,因为我也
模拟了复杂的事件在这种情况下,下面的按键模拟功能工作正常,按下一个选项卡
cndex[38].primary = VK_TAB;
现在这里是麻烦制造者,我这样分配
cndex[39].primary = VK_RETURN;
这是我的按键功能,第一次调用按下,第二次释放
void Simple_press(int i){
Keybord.ki.wVk = cndex[i].primary;
Keybord.ki.dwFlags = 0;
SendInput(1, &Keybord, sizeof(INPUT));
Keybord.ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(1, &Keybord, sizeof(INPUT));
};
另一个注意事项是我不想使用 sendKeys 函数 ,它的缓慢和 它也不适用于"{ENTER}"参数
如果您的应用程序有一个窗口,则可以使用 spy++ 工具来查看 SendInput 命令正在发送的数据,如果目标也有窗口,则可以使用相同的工具来查看是否以及正在向其发送哪些消息。这是一个方便的工具 - 它可能有助于或至少引导您朝着正确的方向前进。
http://msdn.microsoft.com/en-us/library/aa264396%28v=vs.60%29.aspx
在使用 spy++ 进行一些简短调查后,似乎 Enter 的虚拟代码在我的键盘中是不同的,实际上它列出了一些虚幻的 PA1 是 IBM 大型机使用的占位键,我在这样的大型机中调试了我的,无论如何,我搜索了一下,我了解到您可以使用 mapvirtualkey() 将扫描代码转换为更可靠的 vk和 GetKeyboardLayout()(同一部分),它有助于获取我的键盘类型并在不依赖静态资源的情况下使用它。
这是我的spy++日志先去假的,然后是真回车键,再说一下,真进事件也发送字符消息,众所周知的"",似乎 char 消息不是由接收它的进程提取的,如 MSDN 在 Enter 键大小写中建议的那样,使用原始键事件消息
<000006> 000804EA P WM_KEYDOWN nVirtKey:VK_PA1 c重复:1 扫描码:00 f扩展:0fAltDown:0<000008> 000804EA P WM_KEYUP nVirtKey:VK_PA1 c重复:1 扫描码:00 f扩展:0fAltDown:0
<000014> 000804EA P WM_KEYDOWN nVirtKey:VK_RETURN c重复:1 扫描码:1C f扩展:0fAltDown:0<000015> 000804EA P WM_CHAR 查尔代码:"13" (13) c重复:1 扫描代码:1C 扩展:0fAltDown:0
- SSH通过/sbin/SSH无法读取RSA密钥文件(从控制台运行)
- 允许从 std::map 的密钥窃取资源?
- TMap::Emplace() 在应用现有密钥时会覆盖吗?
- 在没有密钥的情况下读取密文的剩余噪声预算
- 如何修复无效的API密钥,IP或操作权限错误?
- 所有可能的链接生成器与64位密钥
- 如何在unordered_map中更改密钥?
- 获取当前密钥状态?
- curl_easy_perform() 失败:SSL 对等证书或 SSH 远程密钥不正常
- 将密钥发送到非前台的游戏窗口
- 有哪些方法可以对基于 256 位密钥的矩阵进行加扰?
- 如何在精灵表上的两个不同部分之间来回切换,同时用户仍使用 SFML 持有密钥
- 如何将CNG密钥转换为OpenSSL EVP_PKEY(反之亦然)?
- 获取 CLSID 密钥问题
- 关于为许可证系统创建密钥生成器的问题
- std::map的密钥出现问题
- C++ 获取同步密钥状态状态问题
- 发送密钥功能输入密钥问题
- std::set和boost::shared_ptr唯一密钥标识问题
- 在其他计算机上导入RSA密钥的问题