HOOK na mysz i klawiature - prawie dziala :)

Odpowiedz Nowy wątek
2011-04-05 22:56
0

Witam Jezeli taki temat juz byl to przepraszam. Zdecydowalem sie napisac nowy post poniewaz nie znalazłem takiego ani tutaj ani w -oo-.

pisze sobie własnego hooka do przechwytywania współrzednych kursorka myszki i wciskanych klawiszy.
Hooka osadzilem w DLL aby był globalny.
Hook na myszke dziala tak jak sobie to wymyslilem - napewno moze byc lepszy ale taki mi wystarczy.
Hook na klawiature dziala w sposób niezadawalajacy :( Owszem przechwytuje "zczytuje" klawisze ale wyswietla je dwa razy.Jezeli sie nie myle to moj hook wykrywa klawisz 2 razy daltego ze przy piszac literke na klawiaturze powstaja dwa zdarzenia wm_KeyDown i wm_KeyUp Domyslam sie ze dlatego moja procedurka wypisuje 2 razy ten sam znak np: "OOKKOO" gdyz sprawdzam tylko jego kod. Gdyz nie wiem jak sprawdzic dodatkowe informacje o wcisnietym klawiszu. Oto czesc kodu DLL. Prosze o pomoc w sprawdzeniu wystepowania zdarzenia wm_keydown

library MouseHook;

uses
  Forms,
  Windows,
  Messages,
  HookCommon in 'HookCommon.pas';

{$J+}
const
  Hook: HHook = 0;
  KHook: HHook = 0;
{$J-}

{$R *.res}

function HookProc(nCode: Integer; MsgID: WParam; Data: LParam): LResult; stdcall;

begin
  // wspołrzędne myszki
end;

procedure HookMouse; stdcall;
begin
 // ustawienie hooka na mysz
end;

procedure UnHookMouse; stdcall;
begin
  // zdjecie hooka
end;

function KeybHookProc(code: Integer; wparam: WPARAM; lparam: LPARAM): LRESULT stdcall;
// w Lparam powinny byc zapisane dodatkowe informacjie

begin
/   if lparam = wm_keydown then /  proste porównanie ze stała //wm_keydown// nie dziala
    if ((wparam>=48) and (wparam<=57)) or ((wparam>=65) and (wparam<=90)) then
      begin
       PostMessage(FindWindow('TForm1', nil), KeyHookMessage, Wparam, Lparam); //wysyłam komunikat do aplikacji                                                                                                     //  z kodem klawisza
      end;
    Result:=CallNextHookEx(KHook,Code,wParam,lParam);
end;

Procedure HookKey; stdcall;
begin
   //hook na klawiature
end;
Procedure UnHookKey; stdcall;
begin
 UnHookWindowsHookEx(KHook);// zdjecie hooka
 KHook:=0;
end;

exports
  HookMouse, UnHookMouse, HookKey, UnHookKey;

begin
end.

Pomózcie prosze :)

Pozostało 580 znaków

2011-04-06 02:00

Aby hook na klawiaturę czy myszkę był globalny NIE POTRZEBA dawać go do dllki wcale, a tematów na ten temat jest sporo w google. Ech, leniuchy, leniuchy. Wszystko jest w google, bo skąd taki lamer jak ja sam by wpadł na to jak stworzyć takie Hooki bez dll'a. Przykład z myszką wziąłem chyba nawet z 4p z gotowców, ale na pewno z jakiejś polskiej strony, tak mi się przynajmniej wydaje. Natomiast Hook na klawiarurę wziąłem z modułu na experts exchange, gdzie pokazano moduł, blokujący klawisze Windowsa lub Alt+Tab i podobne. Także przeanalizuj załączniki, bo mi się nie chce w kółko klepać o tym samym. W pliku: bah_casino_clicker.rar przykład Hooka na myszkę i odczytania pozycji kursora. Natomiast w: catch_keys.rar hooka na klawiaturę. Przede wszystkim przy prawidłowo odczytanych danych o naciśniętym klawiszu, o jego wciśnięciu lub puszczeniu informuje wartość Flag. Dalej kombinuj już sam.


edytowany 1x, ostatnio: olesio, 2011-04-06 02:00

Pozostało 580 znaków

2011-04-06 21:48
0

Dzieki za info:) Skorzystam z niego na pewno.
No tak ale czy przy uzyciu kooka bez dll da sie przechwycic komunikat klawiatury badz myszki zmienic go i wyslac do innej aplikacji?
NP. zablokowac mozliwosc klikania w przegladarce internetowej?

edytowany 1x, ostatnio: Master_RudiX, 2011-04-07 14:53

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0