Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.04 c
15-1153352226
MeF Dei Corvi
2006-07-20 03:37
2006.08.13
Читерство в коде


15-1153219748
Труп Васи Доброго
2006-07-18 14:49
2006.08.13
Блок питания монитора ACER 1714


15-1153239518
Kerk
2006-07-18 20:18
2006.08.13
Неофициальный news-сервер FIDO


15-1152807930
Nic
2006-07-13 20:25
2006.08.13
Меня можно поздравить


15-1153045246
прек
2006-07-16 14:20
2006.08.13
Дата изготовления телефона





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский