2

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

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

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

感谢您的考虑!

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

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

1 回答 1

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()

于 2014-08-06T02:00:05.597 回答