我需要将文本注入directinput应用程序。我正在使用SendInput,但使用虚拟键代码不能与directinput一起使用,所以我需要使用Unicode。现在,我要注入的密钥作为虚拟密钥代码在文件中注册,我需要实时将它们转换为Unicode。
return1 = ToUnicode(vk, MapVirtualKey(vk, MAPVK_VK_TO_VSC), NULL, buffer, 1, 0);
这是我的代码字符串。 vk是int中的虚拟键,缓冲区是 wchar_t 数组大1个单元。我不能只使用简单的 wchar_t ,因为它不能与 ToUnicode 一起使用。 但是,此函数每次只返回0,因此意味着函数无法转换键。 为了记录,我使用标准键,如“wasd”,没有特殊字符。 如果有人能弄清楚为什么会这样,我真的想要一些帮助。
感谢您的考虑!
编辑:同样,只是打击我的懒惰并写一些旧的开关并打破转换值是否方便?例如。wchar_t unicode;
switch (vk)
case '0x30':
unicode = '48';
//ecc...
答案 0 :(得分:0)
它说“keys”数组是可选的,但除非我传入一个键,否则我也得到零结果。也许他们只是意味着你可以选择让它工作吗?
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()
。)