Цитата:
Сообщение от reqyz
...если программа делает ещё что либо кроме хуков, то каждый раз она ожидает все остальные задачи, а только потом работает с мышью, в итоге пока она выполняет остальные задачи, мышь не шевелится...
|
Как не пытался засадить "обычного" мышиного перехватчика, в смысле типа
Код:
var
MouseHook: HHOOK;
function LowLevelMouseProc(nCode: Integer;
WParam: WPARAM; LParam: LPARAM): LRESULT; stdcall;
var
s: string;
begin
Result:= CallNextHookEx(MouseHook, nCode, WParam, LParam);
case WParam of
WM_LBUTTONDOWN: s:= 'LBUTTONDOWN';
WM_LBUTTONUP: s:= 'LBUTTONUP';
WM_LBUTTONDBLCLK: s:= 'LBUTTONDBLCLK';
WM_RBUTTONDOWN: s:= 'RBUTTONDOWN';
WM_RBUTTONUP: s:='RBUTTONUP';
WM_RBUTTONDBLCLK: s:= 'RBUTTONDBLCLK';
WM_MBUTTONDOWN: s:= 'MBUTTONDOWN';
WM_MBUTTONUP: s:= 'MBUTTONUP';
WM_MBUTTONDBLCLK: s:= 'MBUTTONDBLCLK';
WM_MOUSEMOVE: s:= 'MOUSEMOVE';
WM_MOUSEWHEEL: s:= 'MOUSEWHEEL';
end;
Form1.Memo1.Lines.Add(s + ': ' +
IntToStr(Mouse.CursorPos.X) + 'X' +
IntToStr(Mouse.CursorPos.Y));
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
MouseHook:= SetWindowsHookEx(WH_MOUSE_LL {14}, @LowLevelMouseProc, HInstance, 0);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
UnhookWindowsHookEx(MouseHook);
end;
всякой разной программной ерундой, но так этого и не удалось сделать, работает как швецарские ходики, без нареканий