AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi [Eledigt] Überprüfen ob ein Fenster(Handle) ein Child ist
Thema durchsuchen
Ansicht
Themen-Optionen

[Eledigt] Überprüfen ob ein Fenster(Handle) ein Child ist

Ein Thema von Fellmer Lloyd · begonnen am 29. Jun 2004 · letzter Beitrag vom 30. Jun 2004
Antwort Antwort
Fellmer Lloyd
(Gast)

n/a Beiträge
 
#1

[Eledigt] Überprüfen ob ein Fenster(Handle) ein Child ist

  Alt 29. Jun 2004, 13:00
Hallo!

Ich habe ein Programm geschrieben, mit welchem man diverse Fenster verbergen/anzeigen kann. Um dies zu erreichen sende ich eine Message (SW_Hide/SW_Show) an das betroffene Handle.
Ich suche das Handle mittels Fensterklasse (z.B 'IEFrame').

Es klappt im Prinzip auch alles gut, bei einigen Programmen tritt jedoch folgender fehler auf:
Hat das fremde Anwendungsfenster irgend ein zweites Handle mit dem gleichen Klassennamen, wird dieses irgendwie vom "Hauptfenster" gespaltet. Das heisst man sieht nach der SW_Show Message ein zweites, kleines Fenster dass keinen Inhalt hat.

Ich nehme an, das mein Programm an ein "Child-Handle" eine eigene Message sendet, und daher dieser Effekt auftritt.

Gibt es eine Möglichkeit zu überprüfen, ob das Handle ein wirkliches Fenster ist, oder ein Child?
Oder liegt das problem möglicherweise an einem andere Ort?

Mit folgenden Überprüfungen bin ich bis jetzt gescheitert:
Delphi-Quellcode:
if IsWindow(Handle)=False then //Keine Message senden
if GetParent(Handle)=Handle then //Keine Message senden
Die IsChild Funktion kann ich nicht verwenden, da sie das Parent-Handle erwartet.

Hmm... irgendwie habe ich das Gefühl, das Problem liegt wo anders.

Falls erwünscht kann ich ein kleines Demo-Projekt erstellen. Ich glaube ich habe mich kompliziert ausgedrückt, wie immer
  Mit Zitat antworten Zitat
TStringlist

Registriert seit: 1. Dez 2003
360 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Überprüfen ob ein Fenster(Handle) ein Child ist

  Alt 29. Jun 2004, 13:19
eventuell könntest du ja zuerst nochmal kurz mittels EnumWindows checken, ob eine jeweilige Handle auch wirklich als top-level-Window bestätigt wird.
MfG (& Thx ggf.)
  Mit Zitat antworten Zitat
Fellmer Lloyd
(Gast)

n/a Beiträge
 
#3

Re: Überprüfen ob ein Fenster(Handle) ein Child ist

  Alt 29. Jun 2004, 13:44
Wie meinst du das?
Ich ermittle die Handles ja bereits mittels EnumWindows.
  Mit Zitat antworten Zitat
TStringlist

Registriert seit: 1. Dez 2003
360 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Überprüfen ob ein Fenster(Handle) ein Child ist

  Alt 29. Jun 2004, 16:09
EnumWindows gibt jedenfalls nur Handles von top-level Windows zurück und keine von Childs, und darum ging es doch imo teilweise auch irgendwie, oder? Das Prob tritt also bei den top-level Windows auf, die auch zusätzlich dann noch von 'IsWindow' als Windows bestätigt werden? Hmmm.

...Aber wenn du sowieso EnumWindows benutzt, solltest du eigentlich auch erst gar nicht an ein von dir erwähntes zweites Handle des Fensters mit dem gleichen Klassennamen rankommen können. Eventuell speicherst du dir ja zuerst mal alle über EnumWindows gelieferten Handles ab und wenn du danach nochmal irgendwie "Handles mittels Fensterklassen (z.B 'IEFrame')" suchst, nimmst du halt nur solche, die zuvor auch schon vom EnumWindows als top-level-windows bestätigt wurden.
MfG (& Thx ggf.)
  Mit Zitat antworten Zitat
Fellmer Lloyd
(Gast)

n/a Beiträge
 
#5

Re: Überprüfen ob ein Fenster(Handle) ein Child ist

  Alt 30. Jun 2004, 08:17
Hallo

Ich habe mir meine EnumWindows-Funktion nochmals angesehen, sie war fehlerhaft.
Mittels diesem Post konnte ich sie korrigieren.

Danke für deine Hilfe
  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 19:17 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