|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.05.2008, 18:01 | #1 |
Регистрация: 12.10.2007
Сообщений: 9
|
Отлов кликов мыши
Парни край нужно написать хук в DLL которое будет определять нажатие клавиши мыши не только в нашей проге но и во всей ситеме. И желательно с комментами. Заранее благодарю
|
17.05.2008, 18:31 | #2 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Вы делали как Вам говорили? http://programmersforum.ru/showthread.php?t=19107
На форуме полно информации и работающих примеров по хукам на всех возможных языках. Я лично несколько штук выкладывал. |
17.05.2008, 18:42 | #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. |
19.05.2008, 08:27 | #4 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
19.05.2008, 17:59 | #5 |
Регистрация: 12.10.2007
Сообщений: 9
|
НАписал но при запросе переменной постоянно выскакивает 0 посмотрите плиз в чем причина. Точнее 0 выскакивает при использовании хука глобально, при локальном использовании все ок.
Последний раз редактировалось LAFUDR; 19.05.2008 в 19:32. |
21.05.2008, 09:42 | #6 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Ну вообще то я особо хуками не занимался но судя по твоему проекту я бы переделал вот в это:
Прога: Код:
Код:
I'm learning to live...
|
21.05.2008, 11:43 | #7 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Такой способ если и будет работать, то только под Win9x. Это там, несмотря на то, что процессы изолированы, Dll при мэппинге не копируются в каждый процесс, а используется одна и та же копия. Под NT сей номер не пройдёт - и WH_MOUSE, и WH_GETMESSAGE вызываются в чужом процессе и каждый из них имеет свое отображение этой Dll. Таким образом - ещё одна избитая тема - связь между процессами: Общая память, объекты синхронизации, SendMessage и т.д. Применительно к хукам тоже рассматривалась.
|
21.05.2008, 18:59 | #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) сигнал о том что был желчек мышью. |
21.05.2008, 19:46 | #9 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
|
24.05.2008, 01:32 | #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 |