Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как получить клик мышкой [D6, XP]


НиколайКо ©   (2007-02-09 13:21:00) 

Как получить клик мышкой на экране, а не только на форме?


RASkov   (2007-02-10 01:51:00) [1]

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 if (GetAsyncKeyState(VK_LBUTTON) <> 0) then Caption:='нажата левая кнопка'
  else if (GetAsyncKeyState(VK_RBUTTON) <> 0) then Caption:='нажата правая кнопка'
   else Caption:='кнопки не нажаты';
end;


UrbanRider   (2007-02-10 01:23:00) [2]

Создание мышиного перехватчика

   library hookdemo;

   uses

   beeper in 'deldemoshookdemobeeper.pas';

   exports

   sethook index 1,
   unhookhook index 2,
   hookproc index 3;

   begin

   hookedalready:=false;
   end.

   , где beeper.pas содержит следующий код:

   unit beeper;

   interface

   uses wintypes, winprocs, messages;

   function sethook: boolean; export;
   function unhookhook: boolean; export;
   function hookproc(code: integer; wparam: word;
   lparam: longint): longint; export;

   var
   hookedalready: boolean;

   implementation

   var
   ourhook: hhook;

   function sethook: boolean;
   begin
   if hookedalready then
   exit;
   ourhook := setwindowshookex(wh_mouse, hookproc, hinstance, 0);
   hookedalready := true;
   end;

   function unhookhook: boolean;
   begin
   unhookwindowshookex(ourhook);
   hookedalready := false;
   end;

   function hookproc(code: integer; wparam: word;
   lparam: longint): longint;
   begin
   if (wparam = wm_lbuttondown) then
   messagebeep(0);
   result := callnexthookex(ourhook, code, wparam, lparam);
   end;

   end.
   Теперь, при вызове из приложения функции sethook, при каждом нажатии левой кнопки мыши будет раздаваться сигнал - до тех пор, пока вы не вызовете функцию unhookhook. В действующем приложении возвращаемое функцией callnexthookex значение < 0 сведетельствует об отсутствии манипуляций с мышью.
   Источник:
   x-program

Яндекс творит чудеса чувак...


RASkov   (2007-02-10 01:14:00) [3]

> [7] trubin ©   (09.02.07 20:37)

По таймеру пусть ловит...


trubin   (2007-02-09 20:37:00) [4]


> RASkov   (09.02.07 19:26) [6]
> > [3] НиколайКо   (09.02.07 15:48)
>
> GetAsyncKeyStat()


Ему же сам момент надо отловить


RASkov   (2007-02-09 19:26:00) [5]

> [3] НиколайКо   (09.02.07 15:48)

GetAsyncKeyStat()


trubin   (2007-02-09 18:46:00) [6]

SetWindowsHookEx + WH_Mouse = море примеров в инете


Loginov Dmitry   (2007-02-09 16:03:00) [7]

Мышеловку пиши.


НиколайКо   (2007-02-09 15:48:00) [8]

Точнее вопрос задам:
1. Как мне отловить клик (а не кликнуть) мышой по экрану?

2. А можно ли без подсовывания формы под мышку?


RASkov   (2007-02-09 13:33:00) [9]

Mouse_Event();


Правильный Вася   (2007-02-09 13:23:00) [10]

подставить форму под место клика

ps винда посылает клики туда куда считает нужным
она не считает нужным посылать их в твою прогу если кликают куда-то в другое место


Наверх

Титульная страница Поиск, карта сайта Написать письмо