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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2008, 17:53   #1
Kukkk
Форумчанин
 
Регистрация: 28.06.2007
Сообщений: 123
Счастье Передвинуть мышку,кликнуть мышкой.

Здравствуйте, подскажите мне пожалуйста как можно узнать когда пользователь кликает на мышку? В любой программе.

Последний раз редактировалось Kukkk; 24.02.2008 в 19:10. Причина: Уточнил
Kukkk вне форума Ответить с цитированием
Старый 24.02.2008, 19:50   #2
Xardas
Сисадмин
Форумчанин
 
Аватар для Xardas
 
Регистрация: 28.12.2007
Сообщений: 320
По умолчанию

Смотря что Вам надо... Где кликает, куда кликает...
Если нужно что-то сделать, после того как нажата кнопка мыши, пишите обработчики на OnClick, OnMouseDown, OnMouseUp, если я правильно понял. Все зависит от того, что Вам конкретно надо.
Xardas вне форума Ответить с цитированием
Старый 24.02.2008, 21:25   #3
Kukkk
Форумчанин
 
Регистрация: 28.06.2007
Сообщений: 123
По умолчанию

Надо просто получить факт нажатия мышки где угодно. В любом приложении.
Kukkk вне форума Ответить с цитированием
Старый 24.02.2008, 21:31   #4
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Функцией SetWindowsHookEx ставить хук WH_MOUSE или (под NT) WH_MOUSE_LL и проверять всё, что нужно.
B_N вне форума Ответить с цитированием
Старый 24.02.2008, 22:01   #5
Alex.rus
Пользователь
 
Аватар для Alex.rus
 
Регистрация: 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 та в свою очередь передает это сообщение далее, но если была нажата левая кнопка мыши (ЛКМ), то делает свои действия.
Alex.rus вне форума Ответить с цитированием
Старый 24.02.2008, 23:33   #6
Kukkk
Форумчанин
 
Регистрация: 28.06.2007
Сообщений: 123
По умолчанию

А попроще кода нету? Я просто не особо с дллками разбираюсь..
Kukkk вне форума Ответить с цитированием
Старый 25.02.2008, 00:50   #7
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Kukkk Посмотреть сообщение
А попроще кода нету? Я просто не особо с дллками разбираюсь..
Вот тут вы можете скачать исходники, демонстрирующие работу с "мышиными" хуками:
http://coolsong.narod.ru/hook.rar
mihali4 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передвинуть текст внутри ячейки таблицы 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