Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2016, 23:17   #1
Legeardo
Пользователь
 
Регистрация: 04.10.2016
Сообщений: 76
По умолчанию Хуки в виндовс

Код:
var
  Form6: TForm6;
  hHook1:THandle;

function TForm6.KeyBoardHook(nCode: Integer; WParam: WPARAM;
  LParam: LPARAM): LRESULT;
begin
  ShowMessage('21');
  result:= CallNextHookEx(hHook1,nCode,WParam,LParam);
end;

procedure TForm6.Button2Click(Sender: TObject);
begin  
  hHook1:=SetWindowsHookEx(WH_KEYBOARD,@TForm6.KeyBoardHook,HInstance,0);
end;
При нажатии клавиш ничего не происходит. А по идее должно сообщение выводится. Что я делаю не так? У меня программа без длл
Legeardo вне форума Ответить с цитированием
Старый 13.12.2016, 23:29   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,706
По умолчанию

Цитата:
Что я делаю не так?
Не читаете доки.

Цитата:
lpfn [in]
Type: HOOKPROC
A pointer to the hook procedure. If the dwThreadId parameter is zero or specifies the identifier of a thread created by a different process, the lpfn parameter must point to a hook procedure in a DLL. Otherwise, lpfn can point to a hook procedure in the code associated with the current process.
p51x вне форума Ответить с цитированием
Старый 14.12.2016, 01:14   #3
Legeardo
Пользователь
 
Регистрация: 04.10.2016
Сообщений: 76
По умолчанию

Ладно с этим я разобрался. Появилась новая проблемка. Я включаю хук и нажимаю какую то клавишу и она вводится 2 раза. Это наверно из за того что событие срабатывает при нажатии и отпускании. Как сделать проверку что бы срабатывало только при нажатии? Нашел где то
Код:
((lParam shr 16) and KF_UP)=0
Не работает. Все равно 2 раза вводится
Legeardo вне форума Ответить с цитированием
Старый 14.12.2016, 03:03   #4
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,867
По умолчанию

Цитата:
Сообщение от Legeardo Посмотреть сообщение
Нашел где то
Код:
((lParam shr 16) and KF_UP)=0
Не работает. Все равно 2 раза вводится
Ты что-то где-то нашёл на помойке и оно не работает. От нас-то тебе что нужно? Объяснить почему найденное не работает так как тебе хотелось?
А может тебе такой хук и не нужен совсем? Может стоит обратить внимание на хук WH_KEYBOARD_LL ?
northener вне форума Ответить с цитированием
Старый 14.12.2016, 07:50   #5
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,811
По умолчанию

я вот как-то с хуками возился http://www.programmersforum.ru/showthread.php?t=291425
и тут http://www.programmersforum.ru/showthread.php?t=271015
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.

Последний раз редактировалось NetSpace; 14.12.2016 в 07:54.
NetSpace вне форума Ответить с цитированием
Старый 14.12.2016, 11:45   #6
Legeardo
Пользователь
 
Регистрация: 04.10.2016
Сообщений: 76
По умолчанию

Я не нашел то что мне нужно в твоих темах. Так как все так проверить какое событие произошло?
Legeardo вне форума Ответить с цитированием
Старый 14.12.2016, 11:54   #7
Legeardo
Пользователь
 
Регистрация: 04.10.2016
Сообщений: 76
По умолчанию

Все я разобрался. Может кому пригодится:
Код:
if (Wparam=WM_KEYUP) or (Wparam=WM_SYSKEYUP) then
 begin

 end
 else
 begin
//какие то действия
 end;
Legeardo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хуки в службах WorldMaster C# (си шарп) 0 24.09.2015 11:54
Ноутбук HP Pavilion g6-2317sr стояла Виндовс 8, снесла и установила Виндовс 7 ультиматум, но не устанавливаются драйвера Т@тьянк@ Помощь студентам 13 15.12.2013 21:21
Хуки,Иньекции shanluu Win Api 0 22.10.2011 19:52
Хуки в C# kostaNew C# (си шарп) 1 19.08.2011 23:30
хуки Dimarik Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 27 09.08.2011 09:50