AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Message wird nicht gesendet bei globalem Hook
Thema durchsuchen
Ansicht
Themen-Optionen

Message wird nicht gesendet bei globalem Hook

Ein Thema von idontwantaname · begonnen am 11. Aug 2006 · letzter Beitrag vom 11. Aug 2006
 
Benutzerbild von idontwantaname
idontwantaname

Registriert seit: 31. Aug 2004
Ort: Traiskirchen
575 Beiträge
 
Turbo Delphi für Win32
 
#1

Message wird nicht gesendet bei globalem Hook

  Alt 11. Aug 2006, 14:37
Hallo !!

Ich habe mich heute mit Hooks beschäftigt und bin auf diesesHook Tutorial gestoßen. Und das ganze funktioniert schon ganz gut. Bei globalen Hooks empfiehlt der Autor, per MMF Daten an die eigene Anwendung zu schicken. Mir war das zu kompliziert, deshalb habe ich überlegt, ich schicke meinem Fenster einfach eine Message (WM_USER + x) und passe den wParam und lParam nach meinen Wünschen an. Das funktioniert auch, aber nur so lange meine eigene Form im Vordergrund ist.
Das ist natürlich sehr seltsam. Zum schicken der Nachricht verwende ich SendMessage. Der Fehler liegt auch bei dieser Funktion, denn die Hook-Prozedur wird auch ausgeführt, wenn mein Fenster im Hintergrund ist.

Hier mal ein bisschen Code, vielleicht hilft er euch ja weiter.
Delphi-Quellcode:
// aus der DLL

const
  WM_MOUSEHOOKMSG = WM_USER + 1;

var
  GlobalHooksFormHandle: HWND = 0;
  MouseHookHandle: HHOOK = 0;

function MouseHookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
var
  LMouseHookStruct: TMouseHookStruct;
  LMousePositionX: Integer;
  LMousePositionY: Integer;
begin
  if nCode = HC_ACTION then
  begin
    LMouseHookStruct := PMouseHookStruct(lParam)^;
    LMousePositionX := LMouseHookStruct.pt.X;
    LMousePositionY := LMouseHookStruct.pt.Y;

    if GlobalHooksFormHandle <> 0 then
      SendMessage(GlobalHooksFormHandle, WM_MOUSEHOOKMSG, LMousePositionX, LMousePositionY);
  end;

  Result := CallNextHookEx(MouseHookHandle, nCode, wParam, lParam);
end;

function InstallHooks(AGlobalHooksFormHandle: HWND): Boolean; stdcall;
var
  LMouseHookProc: TFNHookProc;
begin
  GlobalHooksFormHandle := AGlobalHooksFormHandle;

  LMouseHookProc := MouseHookProc;
  MouseHookHandle := SetWindowsHookEx(WH_MOUSE, LMouseHookProc, HInstance, 0);

  Result := MouseHookHandle <> 0;
end;
Habt ihr Ideen, wieso er die Message nicht mehr schickt ??

Falls euch der Code nicht reicht, ich hab mal die ganze Projektgruppe angehängt.

Vielen Dank schon mal im Voraus,
Oliver
Angehängte Dateien
Dateityp: rar globalhooks_957.rar (187,1 KB, 6x aufgerufen)
Oliver Hanappi
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz