gpt4 book ai didi

c++ - 无法从虚拟键码转换为 unicode

转载 作者:太空宇宙 更新时间:2023-11-04 13:47:39 27 4
gpt4 key购买 nike

我需要将文本注入(inject)直接输入应用程序。我正在使用 SendInput,但使用虚拟键码不适用于 directinput,所以我需要使用 Unicode。现在,我不想注入(inject)的键作为虚拟键码注册在一个文件中,我需要将它们实时转换为 Unicode。

return1 = ToUnicode(vk, MapVirtualKey(vk, MAPVK_VK_TO_VSC), NULL, buffer, 1, 0);

这是我的代码字符串。 vk 是一个 int 中的虚拟键,buffer 是一个 wchar_t 数组,大 1 个单元。我不能只使用一个简单的 wchar_t,因为它不适用于 ToUnicode。但是,此函数每次都返回 0,这意味着该函数无法转换 key 。作为记录,我使用的是标准键,例如“wasd”,没有特殊字符。如果有人能弄清楚为什么会这样,我真的很想得到一些帮助。

感谢您的考虑!

编辑:另外,与我的懒惰作斗争并编写一些旧的 switch 和 break 来转换值是否方便?例如。

wchar_t unicode;
switch (vk)
case '0x30':
unicode = '48';
//ecc...

最佳答案

它说“键”数组是可选的,但除非我传入一个键,否则我也会得到零结果。也许它们只是意味着您可以选择让它工作或不工作?

std::vector<BYTE> keys(256, 0);
int sc = MapVirtualKey(vk, MAPVK_VK_TO_VSC);
return1 = ToUnicode(vk, sc, keys.data(), buffer, 1, 0);

所以尝试一下(如果您不使用 C++11,则使用 &keys[0] 而不是 keys.data())。

关于c++ - 无法从虚拟键码转换为 unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25150782/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com