Форум: "WinAPI";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизХук на мышь. Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.067 c