Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.11;
Скачать: CL | DM;

Вниз

Хук на мышь.   Найти похожие ветки 

 
UNIVERSAL   (2004-02-04 17:04) [0]

Здравствуйте, коллеги.
Хотелось поставить два хука на мышь и на клаву. С клавой всё окей, а вот мышь почему-то шлёт сама сообщения WM_MOUSEMOVE, даже когда она неподвижна.
Как ставлю хук собственно:

function JRProc(nCode : Integer; wParam, lParam: integer): LResult; stdcall;
var msg:UINT ;
begin
if nCode = HC_ACTION then
begin
 msg:=tagEVENTMSG(pointer(lparam)^).message;
 if (msg=WM_KEYDOWN)or(msg=WM_KEYUP) or (msg=WM_LBUTTONDOWN) or  (msg=WM_LBUTTONUP) or (msg = WM_MOUSEMOVE)
    or  (msg=WM_MOUSEWHEEL) or (msg=WM_RBUTTONDOWN) or (msg =WM_RBUTTONUP)  then
  begin
   SendMessage(rHookRec^.WndHandle ,WM_RESETTIMER,msg ,0);
//    MessageBox(0,pchar(m), pchar(""),16);
  end;
end;
Result := CallNextHookEx(rhookrec^.JRHookHandle, nCode, wParam, lParam);
end;



второй способ, вернее сначала был этот, а выше второй

function MProc(nCode : Integer; wParam, lParam: integer): LResult; stdcall;
begin
if nCode >= 0 then
begin
{  if (nCode=HC_ACTION) then
  begin}
    if (wParam =WM_LBUTTONDOWN) or  (wParam =WM_LBUTTONUP) or (wParam = WM_MOUSEMOVE)
    or  (wParam =WM_MOUSEWHEEL) or (wParam =WM_RBUTTONDOWN) or (wParam =WM_RBUTTONUP) then
     SendMessage(rHookRec^.WndHandle ,WM_RESETTIMER,0,0);

//    MessageBeep(255);
//   end;
end;
Result := CallNextHookEx(rhookrec^.MHookHandle, nCode, wParam, lParam);
end;


Функция установки хука

procedure SetHooks;
begin
rHookRec^.JRHookHandle  := SetWindowsHookEx(WH_JOURNALRECORD ,@JRProc,HInstance,0);
//или
rHookRec^.MHookHandle  := SetWindowsHookEx(WH_MOUSE,@MProc,HInstance,0);
end

Это всё.
Хук нужен для отслежки активности пользователя, т.е. двигает ли он мышью или стучит ли он по клавишам, если определенное время нет - то блокирую тачку.
Так вот что я делаю не так? Заранее спасибо.
ЗЫ. Разумеется хуки в DLL находятся.


 
VMcL ©   (2004-02-04 20:16) [1]

Проверяй xPos и yPos.


 
UNIVERSAL   (2004-02-05 08:46) [2]

А просто интересно почему WM_MOUSEMOVE шлётся? я ведь мышь не трогаю - курсор соответственно не двгается. Если есть объяснение этому буду благодарен. И как я понял ошибки в моём коде нет, так?


 
UNIVERSAL   (2004-02-05 09:22) [3]

2 VMcL © Большое спасибо - заработало. Только на мой предыдущий вопрос я так и не нашёл ответа, если подскажете буду благодарен.



Страницы: 1 вся ветка

Текущий архив: 2004.04.11;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.045 c
8-1076437640
Novichok
2004-02-10 21:27
2004.04.11
Как поменять икогку у exe файла


14-1081963920
RealRascal
2004-04-14 21:32
2004.04.11
Замена блокноту


4-1079006624
KADAN
2004-03-11 15:03
2004.04.11
передача строки другому приложению


1-1082362011
serg128
2004-04-19 12:06
2004.04.11
Как заполнить данными MS Outlook из своего приложения?


3-1081505156
Сапёр
2004-04-09 14:05
2004.04.11
Calculated in Table