Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.13;
Скачать: CL | DM;

Вниз

Клавиатурный шпион   Найти похожие ветки 

 
Dmitry_177   (2006-07-26 18:19) [0]

Попробовал сделать свой клавиатурный шпион, чисто из интереса как это работает, не подумайте ничего плохого.. Сделал я так, в библиотеке:

var
 SysHook: HHook = 0;

function SysMsgProc(nCode: integer; wParam: word; lParam: longint): longint; stdcall;
var
 ModuleFileName: array[0..MAX_PATH-1] of Char;
 KeyName: array[0..16] of Char;
begin
 if (nCode = HC_ACTION) and (((lParam shr 16) and KF_UP) = 0) then
   begin
     GetKeyNameText(lParam, KeyName, SizeOf(KeyName));
     GetModuleFileName(0, ModuleFileName, SizeOf(ModuleFileName));
     ShowMessage(ModuleFileName + #10#13 + KeyName);
     Result := 0;
   end
 else
   Result := CallNextHookEx(SysHook, nCode, wParam, lParam);
end;

procedure RunHook; export; stdcall;  // для запуска хука
begin
 SysHook := SetWindowsHookEx(WH_KEYBOARD, @SysMsgProc, HInstance, 0);
end;

procedure StopHook; export; stdcall;  // для остановки хука
begin
 UnHookWindowsHookEx(SysHook);
 SysHook := 0;
end;

Все работает, при каждом вводе символа в любом окне, выскакивает окно с символом и путь программы в котором был этот символ введен... Но у меня появилось 2 вопросика:
 1. Почему символы только на английском показываются, т.е. хоть даже раскладка клавиатуры будет русской, символы всеравно на английском показываются? Можно ли это как-то исправить?
 2. Можно ли узнать еще заголовок окна программы?


 
PSPF2003 ©   (2006-07-26 18:32) [1]


>  1. Почему символы только на английском показываются, т.
> е. хоть даже раскладка клавиатуры будет русской, символы
> всеравно на английском показываются? Можно ли это как-то
> исправить?

Почитай как работает клава.


 
Dmitry_177   (2006-07-26 19:51) [2]

Я как понимаю нужно использовать функцию ToAsciiEx, подскажите как ее использовать, что-то я не разберусь, мсдн читал про нее...
Подскажите пожалуйста еще по второму вопросу...


 
Dmitry_177   (2006-07-26 20:12) [3]

Пробовал без функции GetKeyNameText, так:

var
KeyBS: TKeyboardState;
BufKeyName: array[0..16] of Char;
...

GetKeyBoardState(KeyBS);
ToAsciiEx(wParam, 0, KeyBS, BufKeyName, 0, GetKeyboardLayout(0));

выводит не правильно символы.. Подскажите пожалуйста...


 
KilkennyCat ©   (2006-07-26 23:46) [4]

http://www.firststeps.ru/mfc/winapi/keyb/r.php?23



Страницы: 1 вся ветка

Текущий архив: 2006.08.13;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.054 c
2-1153667478
KaLLeKa
2006-07-23 19:11
2006.08.13
Как получить текст из ячейки ?


4-1145594905
Alex_C
2006-04-21 08:48
2006.08.13
Как "пишать" через динамик?


2-1153731616
LexXL
2006-07-24 13:00
2006.08.13
Lazarus и Firebird


15-1152874737
NaLom
2006-07-14 14:58
2006.08.13
Блок инета


15-1153122414
Ega23
2006-07-17 11:46
2006.08.13
Чуть не умер со смеху