Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Delphi

Закрытая тема
 
Опции темы
Старый 30.07.2007, 23:29   #1
SubZer0
Администратор
 
Аватар для SubZer0
 
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений
(для 996 пользователей)
Резидентный перехватчик клавиатуры

Приветствую всех!

проблема довольно интересная.. точнее ее реализация...

реально ли из делфи (точнее из freepascal, а еще точнее из lazarus, впринципе разница не большая, мне бы принцип узнать...) придумать резидентный обработчик клавиатуры в виндовс...

если да, то буду рад ссылкой на подобную статью...

(Offline)
 
Старый 31.07.2007, 01:41   #2
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Re: Резидентный перехватчик клавиатуры

Можно сделать DLL с ловушкой. Поищи статью по клавиатурным шпионам - многие по такому принципу устроены.
(Offline)
 
Старый 31.07.2007, 02:07   #3
WaReZ_MEN
Модератор
 
Регистрация: 20.06.2006
Сообщений: 363
Написано 24 полезных сообщений
(для 44 пользователей)
Re: Резидентный перехватчик клавиатуры

Очень даже реально можно обоитись и без DLL правда это будет геморно све кнопки описывать . Статеи полно так что поищи загляни на forum.vingrad.ru или DelphiWorld. Если будут вопросы пиши обязательно помогу.
(Offline)
 
Старый 31.07.2007, 02:09   #4
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Re: Резидентный перехватчик клавиатуры

Declare Function GetKeyState Lib "user32" Alias "GetKeyState" (ByVal nVirtKey As Long) As Integer из WinApi32 вам поможет знать всё о нажатых кнопках... а поиск активного окна знать куда это вводитсо и несваливать всё в кучу.
__________________
(Offline)
 
Старый 31.07.2007, 02:18   #5
WaReZ_MEN
Модератор
 
Регистрация: 20.06.2006
Сообщений: 363
Написано 24 полезных сообщений
(для 44 пользователей)
Re: Резидентный перехватчик клавиатуры

Можно через
TForm1 = class(TForm)
.......
Private
procedure WMHotkey( var msg: TWMHotkey ); message WM_HOTKEY;
End;
procedure Form1.FormCreate(Sender: TObject);
Begin
RegisterHotkey(Handle, 1, MOD_CONTROL, ord('W'));
RegisterHotkey(Handle, 2, MOD_CONTROL, ord('P'));
end;
....
procedure TForm1.WMHotkey(var msg: TWMHotkey);
begin
if msg.hotkey = 1 then
begin
ShowWindow("press W");
end;
if msg.hotkey = 2 then
begin
ShowWindow("press P");
end;
end;
....
это канечно все кнопки описывать но зато не нужно искать окно в катором ты их нажал...и dll тож не нужно... Для клавиатурного шпиона способ хреновый а вот для быстрых клавиш в сымый раз + Никаких проблем с Касперским.
(Offline)
 
Старый 31.07.2007, 03:27   #6
SubZer0
Администратор
 
Аватар для SubZer0
 
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений
(для 996 пользователей)
Re: Резидентный перехватчик клавиатуры

Я больше смотрю в сторону SetWindowsHookEx


вроде после прочтения кучи гемора в нете, потихоньку начинаю въезжать в структуру всего дела...

нашел, вроде как, рабочий пример для делфи (не тестил, не знаю)... см. аттач!

и у меня есть пара вопросов по нему:


@hook:= nil; // инициализируем переменную hook
странный какойто метод инициализации... ктонить объяснит?

как проверить создан ли уже обработчик?

ну и как через winapi получить дескриптор окна и текстбокса в котором находится на данный момент ввода курсор?

впринципе вроде пока всё...

заранее спасибо!
(Offline)
 
Старый 31.07.2007, 15:04   #7
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Re: Резидентный перехватчик клавиатуры

Есть одна книга, "Программирование в Delphi глазами хакера"-там про ловушки очень хорошо расписано, правда весит 4 метра...
Ссылка в посте №10.
(Offline)
 
Старый 31.07.2007, 18:14   #8
Chrono Syndrome
 
Сообщений: n/a
Re: Резидентный перехватчик клавиатуры

Сообщение от SBJoker
Declare Function GetKeyState Lib "user32" Alias "GetKeyState" (ByVal nVirtKey As Long) As Integer из WinApi32 вам поможет знать всё о нажатых кнопках... а поиск активного окна знать куда это вводитсо и несваливать всё в кучу.
Может лучше GetAsyncKeyState ?

ну и как через winapi получить дескриптор окна и текстбокса в котором находится на данный момент ввода курсор?
AFAIK эта информация хуками не фиксируется, но можно, вроде бы, просто исходить из того факта, что ввод возможен только в ForegroundWindow...
 
Старый 31.07.2007, 18:52   #9
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Re: Резидентный перехватчик клавиатуры

Сообщение от Chrono Syndrome
Может лучше GetAsyncKeyState ?
да несомнено лучше
__________________
(Offline)
 
Старый 01.08.2007, 00:29   #10
SubZer0
Администратор
 
Аватар для SubZer0
 
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений
(для 996 пользователей)
Re: Резидентный перехватчик клавиатуры

2 ViNT

перелил книжку се на хост... отсюжа можешь удалить, а то у нас ограничение на аттачи...

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 5 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.
(Offline)
 
Старый 22.08.2007, 17:32   #11
Sotis
AnyKey`щик
 
Регистрация: 17.02.2007
Сообщений: 4
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Резидентный перехватчик клавиатуры

Спасибо за книжку а то моя копия этого файлика сгинула на флехе во время глюка, а книжка срочно понадобилась.

P.s. Я тоже занимаюсь реализацией клавиатурного шпиона. тока неполучается пока...
(Offline)
 
Закрытая тема


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скан-коды клавиатуры Chip Проекты на MidletPascal 21 27.01.2010 14:26
Обработка клавиатуры. GRAY_WOLF BugTracker 1 11.10.2009 22:00
Чистка клавиатуры (Фотоужасы, слабонервным и перед едой не смотреть!) ABTOMAT Болтовня 32 20.01.2008 13:39
Перехват сообщений в VB.NET pax Visual Basic 2 28.06.2007 00:31


Часовой пояс GMT +4, время: 06:22.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com