0

我的目标是将从键盘收集的字母写入文件。我试图弄清楚如何使用 ToUnicodeEx 函数或类似的东西。我的代码仅适用于英语,当我将键盘转换为另一种语言时,它仍然输入英文字母。

怎么了?

这是相关代码:

dwThreadId = GetWindowThreadProcessId(hwnd, &dwProcessId);
BYTE *kState = (BYTE*)malloc(256);
GetKeyboardState(kState);
hkl = GetKeyboardLayout(dwThreadId);
wchar_t UniChar[16] = {0};
//UINT virtualKey = MapVirtualKeyEx((UINT)character, MAPVK_VK_TO_CHAR, hkl);
UINT virtualKey = character;
ToUnicodeEx(character, virtualKey, (BYTE*)kState, UniChar, 16, NULL, hkl);
//printf("this is the char: %lc ",UniChar[0]);
//fwrite (UniChar , sizeof(wchar_t), wcslen(UniChar), file);
fputws(UniChar,file);
free(kState);
//fputc(character,file);
fclose(file); 
break;

尝试使用

UINT virtualKey = MapVirtualKeyEx((UINT)character, 2, hkl);

反而; 也没有工作。

4

0 回答 0