Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Kann ich herausfinden wann ein fremdes Fenster (un)sichtbar wird? (https://www.delphipraxis.net/188489-kann-ich-herausfinden-wann-ein-fremdes-fenster-un-sichtbar-wird.html)

Der schöne Günther 9. Mär 2016 11:57


Kann ich herausfinden wann ein fremdes Fenster (un)sichtbar wird?
 
Angenommen ich habe ein
Delphi-Quellcode:
HWND
aus einer fremden Anwendung. Ich möchte mitbekommen wenn es sichtbar wird. Natürlich könnte ich im Hintergrund immer fleißig pollen. Geht es auch besser? Kann ich mich irgendwo "registrieren" und das mitbekommen? Kann ich Nachrichten wie
Delphi-Quellcode:
WM_SHOWWINDOW
für ein fremdes
Delphi-Quellcode:
HWND
mitbekommen?

hoika 9. Mär 2016 12:03

AW: Kann ich herausfinden wann ein fremdes Fenster (un)sichtbar wird?
 
Hallo,

dein Suchwort heisst "Hook", in dem Fall ein globaler Hooh, d.h. du musst eine DLL schreiben.


Heiko

Der schöne Günther 9. Mär 2016 15:06

AW: Kann ich herausfinden wann ein fremdes Fenster (un)sichtbar wird?
 
Wenn ich es unter MSDN: Hooks Overview richtig verstehe, dann wäre der Typ WH_CALLWNDPROCRET das richtige für mich, oder? Die anderen Hook-Typen sehen nicht so aus als ob man damit weiter käme...

Sunec 9. Mär 2016 16:33

AW: Kann ich herausfinden wann ein fremdes Fenster (un)sichtbar wird?
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1332453)
Wenn ich es unter MSDN: Hooks Overview richtig verstehe, dann wäre der Typ WH_CALLWNDPROCRET das richtige für mich, oder? Die anderen Hook-Typen sehen nicht so aus als ob man damit weiter käme...

Genau den brauchst du.

Delphi-Laie 9. Mär 2016 17:24

AW: Kann ich herausfinden wann ein fremdes Fenster (un)sichtbar wird?
 
Ob die sog. DLL-Injektion erfolgreich war / ist, kannst Du mit http://www.nirsoft.net/utils/injected_dll.html probieren / ermitteln / herausfinden.

Der schöne Günther 9. Mär 2016 17:51

AW: Kann ich herausfinden wann ein fremdes Fenster (un)sichtbar wird?
 
Faszinierend.

Aber wenn der Debugger in der Hook-Routine auf einem Haltepunkt anhält kann mir das schon reichen, oder? Es scheint alles so zu klappen wie ich es haben wollte :-)

Aber ich kannte bislang nur die "Low Level Keyboard"-Hooks- Ich verstehe bislang nicht, warum der Code dieses mal in eine Dll muss.

himitsu 9. Mär 2016 18:53

AW: Kann ich herausfinden wann ein fremdes Fenster (un)sichtbar wird?
 
Weil dieser Code IN der anderen Anwendung ausgeführt wird und um da rein zu kommen, wird die DLL in dem anderen Prozess/Programm geladen.

Der schöne Günther 9. Mär 2016 19:16

AW: Kann ich herausfinden wann ein fremdes Fenster (un)sichtbar wird?
 
Ja, ich fand es als Nicht-Experte etwas komisch was die anderen Prozesse überhaupt damit wollen- Ich dachte "Windows selbst" ist der Oberboss und verteilt beispielweise die Fenster-Nachrichten. Nach dem Erhalt kümmert es sich dann um die Abarbeitung der "CALLWNDPROCRET"-Hooks. Stattdessen wird es anscheinend in jeden einzelnen Prozess reingepackt.

Was hat man dadurch gewonnen? Höhere Sicherheit wegen Benutzerkontexten, Admin/Nicht-Admin und so etwas?

PS: Ja, meine Frage ist gelöst. Ich wundere mich nur über die Umsetzung

Delphi-Laie 9. Mär 2016 19:20

AW: Kann ich herausfinden wann ein fremdes Fenster (un)sichtbar wird?
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1332492)
Ja, ich fand es als Nicht-Experte etwas komisch was die anderen Prozesse überhaupt damit wollen- Ich dachte "Windows selbst" ist der Oberboss und verteilt beispielweise die Fenster-Nachrichten.

Bleibt es auch. Der Hook-Mechanismus ist ein von Winzigweich für Windows bereitgestellter Mechanismus, Windows-Botschaften zu überwachen, "abzuhören". Es ist kein "Hack" oder "Crack", sondern etwas ganz offizielles, dennoch soll es Virenscanner geben, die schon daran herummosern.

Zitat:

Zitat von Der schöne Günther (Beitrag 1332492)
Stattdessen wird es anscheinend in jeden einzelnen Prozess reingepackt.

Soweit ich mich entsinne, schleppt (so zimelich) jeder Prozeß dann die Hook-DLL mit sich als Modul herum. Ich weiß nicht, ob man so hooken kann, daß man das nur auf einen einzelnen Fremdprozeß anzuwenden gedenkt. Frag dazu am besten Asserbad, der ist der "Hook-Papst".

Remko 15. Mär 2016 22:40

AW: Kann ich herausfinden wann ein fremdes Fenster (un)sichtbar wird?
 
Instead of a hook you can also use the SetWinEventHook function


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:26 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