Форум: "Начинающим";
Текущий архив: 2006.08.13;
Скачать: [xml.tar.bz2];
ВнизКлавиатурный шпион Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.047 c