AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Kann ich herausfinden wann ein fremdes Fenster (un)sichtbar wird?
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Der schöne Günther · begonnen am 9. Mär 2016 · letzter Beitrag vom 15. Mär 2016
Antwort Antwort
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

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

  Alt 9. Mär 2016, 11:57
Angenommen ich habe ein 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 WM_SHOWWINDOW für ein fremdes HWND mitbekommen?
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#2

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

  Alt 9. Mär 2016, 12:03
Hallo,

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


Heiko
Heiko
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

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

  Alt 9. Mär 2016, 15:06
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...
  Mit Zitat antworten Zitat
Sunec

Registriert seit: 31. Aug 2013
88 Beiträge
 
Delphi XE8 Architect
 
#4

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

  Alt 9. Mär 2016, 16:33
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.
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#5

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

  Alt 9. Mär 2016, 17:24
Ob die sog. DLL-Injektion erfolgreich war / ist, kannst Du mit http://www.nirsoft.net/utils/injected_dll.html probieren / ermitteln / herausfinden.

Geändert von Delphi-Laie ( 9. Mär 2016 um 19:45 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

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

  Alt 9. Mär 2016, 17:51
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

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

  Alt 9. Mär 2016, 18:53
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.
$2B or not $2B
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

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

  Alt 9. Mär 2016, 19:16
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
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#9

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

  Alt 9. Mär 2016, 19:20
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.

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".

Geändert von Delphi-Laie ( 9. Mär 2016 um 19:22 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Remko
Remko

Registriert seit: 10. Okt 2006
Ort: 's-Hertogenbosch, Die Niederlande
222 Beiträge
 
RAD-Studio 2010 Arc
 
#10

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

  Alt 15. Mär 2016, 22:40
Instead of a hook you can also use the SetWinEventHook function
See my blog blog
See our Jedi blog
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:12 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