![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 12.10.2007
Сообщений: 9
|
![]()
Парни край нужно написать хук в DLL которое будет определять нажатие клавиши мыши не только в нашей проге но и во всей ситеме. И желательно с комментами. Заранее благодарю
|
![]() |
![]() |
![]() |
#2 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
![]()
Вы делали как Вам говорили? http://programmersforum.ru/showthread.php?t=19107
На форуме полно информации и работающих примеров по хукам на всех возможных языках. Я лично несколько штук выкладывал. |
![]() |
![]() |
![]() |
#3 |
Регистрация: 12.10.2007
Сообщений: 9
|
![]()
Спасибо парни всетаки я откопал что меня интересовала и вот что получилось
library dll; uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; var SysHook : HHook = 0; Wnd : Hwnd = 0; rez : integer; function SysMsgProc(code : integer; wParam : word; lParam : longint) : longint; stdcall; begin if code = HC_ACTION then begin if TMsg(Pointer(lParam)^).message = WM_RBUTTONDOWN then begin MessageBox(0, 'Нажата правая клавиша мыши', 'ХУК', 0); rez:=rez+1; end; end; Result:=CallNextHookEx(SysHook, Code, wParam, lParam); end; procedure hook(switch : Boolean) export; stdcall; begin if switch=true then begin SysHook := SetWindowsHookEx(WH_GETMESSAGE, @SysMsgProc, HInstance, 0); MessageBox(0, 'ХУК установлен !', 'ХУК', 0); end else begin if UnhookWindowsHookEx(SysHook) then MessageBox(0, 'ХУК снят !', 'ХУК', 0); SysHook := 0; end; end; exports hook; begin end. Возник такой вопрос. У меня есть переменная рез которая считает количество нажатий правой клавиши. Как сделать чтоб после каждого увеличения эта переменная передавалась в основную программу? Заранее огрормное спасибо Последний раз редактировалось Stilet; 19.05.2008 в 08:25. |
![]() |
![]() |
![]() |
#4 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 12.10.2007
Сообщений: 9
|
![]()
НАписал но при запросе переменной постоянно выскакивает 0 посмотрите плиз в чем причина. Точнее 0 выскакивает при использовании хука глобально, при локальном использовании все ок.
Последний раз редактировалось LAFUDR; 19.05.2008 в 19:32. |
![]() |
![]() |
![]() |
#6 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Ну вообще то я особо хуками не занимался но судя по твоему проекту я бы переделал вот в это:
Прога: Код:
Код:
I'm learning to live...
|
![]() |
![]() |
![]() |
#7 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
![]()
Такой способ если и будет работать, то только под Win9x. Это там, несмотря на то, что процессы изолированы, Dll при мэппинге не копируются в каждый процесс, а используется одна и та же копия. Под NT сей номер не пройдёт - и WH_MOUSE, и WH_GETMESSAGE вызываются в чужом процессе и каждый из них имеет свое отображение этой Dll. Таким образом - ещё одна избитая тема - связь между процессами: Общая память, объекты синхронизации, SendMessage и т.д. Применительно к хукам тоже рассматривалась.
|
![]() |
![]() |
![]() |
#8 |
Регистрация: 12.10.2007
Сообщений: 9
|
![]()
Сделал как написано ничего своего не добавлял длл просто откомпилировал. В прогу поставил 1 едит 1 таймер в тексте таймера изменил только на
procedure TForm1.Timer1Timer(Sender: TObject); begin if form1.edit1.text<>inttostr(one)then form1.edit1.Text:=inttostr(one) else form1.edit1.text := '0'; end; то что он показывает явно те то что нужно ![]() Сам вопрос состоит в том чтоб длл подало проге любой (boolian, integer) сигнал о том что был желчек мышью. |
![]() |
![]() |
![]() |
#9 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
![]() |
![]() |
![]() |
![]() |
#10 |
Регистрация: 12.10.2007
Сообщений: 9
|
![]()
Спасибо огромное то чно нужно
![]() |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Стрелка мыши | Gladiator | Общие вопросы Delphi | 3 | 21.05.2008 20:56 |
Sreen Saver отлов событий | Alexoid | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 10 | 28.04.2008 15:41 |
Нажатие кнопок мыши | zzzzz | Win Api | 7 | 02.12.2007 12:33 |
Как распознать 2 мыши | sin | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 16 | 11.04.2007 21:31 |
как сделать считалку кликов | M@rsel | Win Api | 1 | 19.12.2006 15:37 |