Главная страница
    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.057 c
6-1143539218
Alkid
2006-03-28 13:46
2006.08.13
FastNet


15-1152965102
Андрей Пазик
2006-07-15 16:05
2006.08.13
Вот ТАК! нужно бороться с коррупцией


2-1153993191
Геннадий
2006-07-27 13:39
2006.08.13
запрос SQL


3-1149236558
elena_pp
2006-06-02 12:22
2006.08.13
Помогите правльно организовать таблицы


15-1152612671
Kerk
2006-07-11 14:11
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский