Windows 映射意大利键盘上缺失的字符

Windows 映射意大利键盘上缺失的字符,windows,winapi,keyboard,Windows,Winapi,Keyboard,我想映射一个键盘布局上不存在的字符,可以吗 我的键盘布局是,字符是~和` 我想在按下AltGr(VK_RMENU)+VK_OEM_4或VK_OEM_6时重新映射 但这个字符不在列表中,所以我想我不能用于重新映射 对于其他人来说,输入字符是有效的 但这个字符不在虚拟密钥代码列表中,所以我想我不能 使用SendInput重新映射 ~和`在中。它是VK\U OEM\U 3(0xC0) 您可以使用SendInput~和`如下所示: UINT result = 0; DWORD errCode = 0;

我想映射一个键盘布局上不存在的字符,可以吗

我的键盘布局是,字符是~和`
我想在按下AltGr(VK_RMENU)+VK_OEM_4或VK_OEM_6时重新映射

但这个字符不在列表中,所以我想我不能用于重新映射

对于其他人来说,输入字符是有效的

但这个字符不在虚拟密钥代码列表中,所以我想我不能 使用SendInput重新映射

~和`在中。它是VK\U OEM\U 3(0xC0)

您可以使用SendInput~和`如下所示:

UINT result = 0;
DWORD errCode = 0;

tagINPUT inputArray[2] = {};
tagKEYBDINPUT keyboardInput[2] = {};

keyboardInput[1].wVk = 0xC0; // Virtual-Key code for the '`~' key.
keyboardInput[1].wScan = 0x29; // Scan code for the '`~' key.

inputArray[1].type = INPUT_KEYBOARD;
inputArray[1].ki = keyboardInput[1];


keyboardInput[0].wVk = 0x10; // Virtual-Key code for the 'shift' key.
keyboardInput[0].wScan = 0x2A; // Scan code for the 'shift' key.

inputArray[0].type = INPUT_KEYBOARD;
inputArray[0].ki = keyboardInput[0];

// Enter '~' (shift + '`~' key)
result = SendInput(2, inputArray, sizeof(tagINPUT));
errCode = GetLastError();

// Enter '`'
result = SendInput(1, &inputArray[1], sizeof(tagINPUT));
errCode = GetLastError();
如果要输入这两个字符,SendMessage也可以这样做():


LPCWSTR Target_window_Name=TEXT(“无标题记事本”)//他们怎么失踪了?我正在看标准的意大利语布局,这些字符就在那里。这些字符不在我的键盘上
LPCWSTR Target_window_Name = TEXT("Untitled - Notepad"); //<- Has to match window name
HWND hWindowHandle = FindWindow(NULL, Target_window_Name);
HWND EditClass = FindWindowEx(hWindowHandle, NULL, L"Edit", NULL);


SendMessage(EditClass, WM_KEYDOWN, 0xC0, 0x002C0001); //VK_OEM_3 0xC0
SendMessage(EditClass, WM_CHAR, 0x7E, 0x002C0001); //~
SendMessage(EditClass, WM_KEYUP, 0xC0, 0xC02C0001);

SendMessage(EditClass, WM_KEYDOWN, 0xC0, 0x002C0001); //VK_OEM_3 0xC0
SendMessage(EditClass, WM_CHAR, 0x60, 0x002C0001); //`
SendMessage(EditClass, WM_KEYUP, 0xC0, 0xC02C0001);