AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Kleine Verständnisfrage zu globalen Hooks

Kleine Verständnisfrage zu globalen Hooks

Ein Thema von Neutral General · begonnen am 18. Jan 2011 · letzter Beitrag vom 18. Jan 2011
 
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Kleine Verständnisfrage zu globalen Hooks

  Alt 18. Jan 2011, 10:24
Hallo,

Ich versuche mich gerade an einem globalen Hook. Bin jetzt allerdings etwas verwirrt.

Habe eine DLL mit der Callback-Funktion für den Hook, die von der DLL auch exportiert wird.
Mein erster Versuch war nun folgender. Ich rufe in meiner Anwendung auf:

Delphi-Quellcode:
// FDLLInst = hInstance von DLL (über LoadLibrary erhalten)
// FDLLHookProc = Zeiger auf die Callback-Funktion (über GetProcAddress erhalten)
FHook := SetWindowsHookEx(WH_GETMESSAGE,FDLLHookProc,FDLLInst,0);
Das scheint auch prinzipiell zu funktionieren. Die DLL wird nun von jedem Prozess geladen und die Callback-Funktion wird ausgeführt.

Wenn ich jetzt den Hook aus dem Hauptprogramm raus deinstallieren will:

Delphi-Quellcode:
if FHook <> 0 then
  UnHookWindowsHookEx(FHook);
dann fängt Windows ziemlich an zu taumeln und letztendlich verabschiedet sich der Window-Manager.
Habe jetzt rausgefunden, dass ich wohl scheinbar (?) SetWindowsHookEx und UnHookWindowsHookEx in jedem Prozess (also in der DLL) aufrufen muss. Dazu exportiert die DLL in den von mir gelesenen Tutorials Funktionen (InstallHook, UnInstallHook).

Aber wie funktioniert das denn dann?
Ich lade die DLL mit meinem Programm und rufe InstallHook auf. Die DLL ruft nun SetWindowsHookEx auf. Aber habe ich dann nicht nur einen lokalen Hook in meinem Prozess? Wie installieren jetzt die anderen Prozesse den Hook?

Also da fehlt mir irgendwie noch ein Stück Verständnis
Kann mich da vllt. kurz jemand aufklären?

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 02:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz