Einzelnen Beitrag anzeigen

PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#1

SetWindowsHookEx und WH_SHELL

  Alt 12. Okt 2023, 12:17
Hallo!

Ich möchte informiert werden, wenn systemweit irgend eine App ein Top-Level-Fenster erzeugt. Zu diesem Zweck habe ich eine DLL geschrieben, in der dieser Code ausgeführt wird:

hHook := SetWindowsHookEx(WH_SHELL, @ShellProc, HInstance, 0);

In der Host-App wird in FormCreate die DLL aufgerufen (sowohl Host-App als auch DLL sind 32-Bit). Die Host-App wird natürlich im Windows 10 File-Explorer gestartet (nicht von der IDE).

Die Benachrichtigung funktioniert auch sehr gut - nur: Kurze Zeit nach dem Klick auf den UNHOOK-Button verabschiedet sich die Delphi IDE aus dem Speicher! Irgend etwas scheint mit dem Ent-Hooken nicht zu funktionieren?

Vielleicht gibt es hier jemanden, der mehr Erfahrung mit Hooks hat als ich? Wäre toll, wenn wir das gelöst kriegten!

Hier sind die Quell-Dateien:

TopLevelWindowCreationNotification.zip

Mein System: Delphi 11 in Windows 10
Geändert von PeterPanino, damit der Platz auf dem Bildschirm nicht so leer aussieht.

Geändert von PeterPanino (12. Okt 2023 um 12:35 Uhr)
  Mit Zitat antworten Zitat