Мне нужно ввести текст в приложения прямого ввода. Я использую SendInput, но использование кодов виртуальных клавиш не работает с прямым вводом, поэтому мне нужно использовать 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...
vk
, и результатMapVirtualVk(vk, 0)
. Кроме того, для второго параметра MapVirtualKey определены константы... поэтомуMAPVK_VK_TO_VSC
понятнее, чем просто сказать 0. - person HostileFork says dont trust SE   schedule 06.08.2014