|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.02.2008, 17:53 | #1 |
Форумчанин
Регистрация: 28.06.2007
Сообщений: 123
|
Передвинуть мышку,кликнуть мышкой.
Здравствуйте, подскажите мне пожалуйста как можно узнать когда пользователь кликает на мышку? В любой программе.
Последний раз редактировалось Kukkk; 24.02.2008 в 19:10. Причина: Уточнил |
24.02.2008, 19:50 | #2 |
Сисадмин
Форумчанин
Регистрация: 28.12.2007
Сообщений: 320
|
Смотря что Вам надо... Где кликает, куда кликает...
Если нужно что-то сделать, после того как нажата кнопка мыши, пишите обработчики на OnClick, OnMouseDown, OnMouseUp, если я правильно понял. Все зависит от того, что Вам конкретно надо. |
24.02.2008, 21:25 | #3 |
Форумчанин
Регистрация: 28.06.2007
Сообщений: 123
|
Надо просто получить факт нажатия мышки где угодно. В любом приложении.
|
24.02.2008, 21:31 | #4 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Функцией SetWindowsHookEx ставить хук WH_MOUSE или (под NT) WH_MOUSE_LL и проверять всё, что нужно.
|
24.02.2008, 22:01 | #5 |
Пользователь
Регистрация: 02.12.2007
Сообщений: 26
|
Для начала надо написать DLL-ку.
library My_dll; uses windows, Messages; var syshook : hHook=0; Wnd: Hwnd=0; Function SysMsgProc(code:integer; wParam:word; Iparam:longint): longint; stdcall; Begin callNextHookEx(SysHook, code, wParam, Iparam);//Передаём дальше if code=hc_action then begin wnd:=Tmsg(Pointer(IParam)^).hwnd; if TMsg(pointer(IParam)^).message=WM_L BUTTONDOWN then //Если ЛКМ begin //Делаем свои действия end; end; end; Procedure RunStopHook(state:boolean)export;st dcall; begin if state=true then begin //Если из проги пришло True то устанавливаем хук и обработку =>собщений передаём в проц. SysMsgProc (во втором параметре SetWindowsHookEx) syshook:=SetWindowsHookEx(WH_GETMES SAGE,@SysMsgProc,HInstance,0); end else begin UnHookWindowsHookEx(SysHook);//Если False то снимаем хук syshook:=0; end; end; exports RunStopHook index 1; begin end. Далее пишим прогу для DLL: unit Unit1; ................... var Form1: TForm1; procedure RunStopHook(State : Boolean) stdcall; external 'hackpass.dll' index 1; implementation {$R *.dfm} procedure TForm1.FormShow(Sender: TObject); begin RunStopHook(true);//"Посылаем" в DLL true end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin RunStopHook(false);//"Посылаем" в DLL false end; Вот и все событие FormShow посылает в DLL true, DLL-ка устанавливает хук который отлавливает все сообщения в системе, после того как хук отловил сообщение оно передается в процедуру SysMsgProc та в свою очередь передает это сообщение далее, но если была нажата левая кнопка мыши (ЛКМ), то делает свои действия. |
24.02.2008, 23:33 | #6 |
Форумчанин
Регистрация: 28.06.2007
Сообщений: 123
|
А попроще кода нету? Я просто не особо с дллками разбираюсь..
|
25.02.2008, 00:50 | #7 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Вот тут вы можете скачать исходники, демонстрирующие работу с "мышиными" хуками:
http://coolsong.narod.ru/hook.rar |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Передвинуть текст внутри ячейки таблицы | RamireZ | HTML и CSS | 4 | 14.09.2009 15:19 |
Кликнуть мышью | Crivel | Помощь студентам | 9 | 07.08.2008 21:26 |
Как програмно дважды кликнуть в RichEdit? | apromix | Общие вопросы Delphi | 10 | 23.05.2008 17:09 |
как с делфи кликнуть мышю? | Iceman | Помощь студентам | 1 | 23.02.2008 11:59 |
Как передвинуть несколько TImage? | Слава | Помощь студентам | 4 | 22.01.2008 21:23 |