![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как получить клик мышкой [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 винда посылает клики туда куда считает нужным
она не считает нужным посылать их в твою прогу если кликают куда-то в другое место