AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi EnumProps liefert immer LeerProperty?
Thema durchsuchen
Ansicht
Themen-Optionen

EnumProps liefert immer LeerProperty?

Ein Thema von himitsu · begonnen am 26. Mai 2006 · letzter Beitrag vom 2. Jun 2006
Antwort Antwort
Benutzerbild von himitsu
himitsu

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

EnumProps liefert immer LeerProperty?

  Alt 26. Mai 2006, 15:25
Moin ihr,

ich hab da ein per MSDN-Library durchsuchenCreateWindowEx erstelltes Fenster, welchem einige Properties zugewiesen und gelöscht werden ... nur wollte ich zu Debugzwecken beim Programmende noch prüfen, ob noch welche vorhanden sind,
also hab ich versucht per MSDN-Library durchsuchenEnumProps mir die vorhanden Properties geben lassen.
Leider liefert mir diese Funktion aber auch immer einen "leeren" Property,
egal ob Properties vorhanden sind, oder nicht vorhanden sein sollten.

Alle von mir per MSDN-Library durchsuchenSetProp erstellten Properties werden auch per MSDN-Library durchsuchenRemoveProp wieder gelöscht.

Es sollte also kein Property vorhanden sein ... erst Recht keines ohn Name.

Die Werte des "angelichen" Properties sind:
Code:
hWnd    = aktuelles Handle des Windows
PropName = ''
Data    = $FFFFFFFF

[add]
Hab gerede gemerkt, daß PopName doch nicht auf nil steht, sondern auf $A918, wobei dort doch kein Pointer liegen kann (also bei kleiner als $00010000).

Dabei hat die MessageBox und auch Delphi nur einen LeerString angezeigt, also auch keine Fehlermeldung wegen falschem Pointer, oder so.

Delphi-Quellcode:
Function EnumProps(HWnd: HWND; PropName: PWideChar; Data: THandle): LongBool; StdCall;
  Begin
    Result := True;
    MessageBoxExW(0, PropName, '', 0, 0);
  End;

EnumPropsW(MessageWindow, EnumProps);
$2B or not $2B
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#2

Re: EnumProps liefert immer LeerProperty?

  Alt 1. Jun 2006, 01:38
Zitat von himitsu:
Hab gerede gemerkt, daß PopName doch nicht auf nil steht, sondern auf $A918, wobei dort doch kein Pointer liegen kann (also bei kleiner als $00010000).
Dürfte sich um ein MSDN-Library durchsuchenAtom handeln. Wenn ich mich recht entsinne, ist genau dieses welches du beschreibst in irgendeiner Art und Weise bei fast jedem Fenster zu finden. Ich entsinne mich jedenfalls des Wertes $A918. Kann das eventuell etwas mit Theme Support unter XP zu tun haben?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: EnumProps liefert immer LeerProperty?

  Alt 1. Jun 2006, 13:36
Hmmm, dabei hab ich nichtmal den XP-Style im Programm aktiviert -.-''

Und das Fenster ist auch nichtmal sichtbar (is halt ein "Unsichtbares" für Verwaltungszwecke) und das Teil is ja auch in 'nem total jungfräulichen Fenster schon da, drum hatte ich mich ja gewundert.

Aber zumindestens wäre das mal 'ne Erklärung ... vielleicht mach ich demnächst mal 'nen kleineres Testprogramm dafür und teste es auf Win98, oder laß es in 'nem Win2K testen ... die sollten ja dann dieses "Atom"? nicht haben, wenn's dafür da ist (hoffe ich mal) ^^


Mir ist das halt nur aufgefallen, weil ich im DebugMode am Programmende prüfen laß, ob noch was in dem Fenster ist, also ob sich auch alles braf wieder abgemeldet/freigegeben hat.
$2B or not $2B
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#4

Re: EnumProps liefert immer LeerProperty?

  Alt 1. Jun 2006, 14:40
Also zwischen $0000 und $FFFF sind jedenfalls Atome. Die werden ja an vielen Stellen noch verwendet, obwohl es noch Relikte aus Win16 sind.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: EnumProps liefert immer LeerProperty?

  Alt 1. Jun 2006, 15:16
Zitat von Olli:
Also zwischen $0000 und $FFFF sind jedenfalls Atome. Die werden ja an vielen Stellen noch verwendet, obwohl es noch Relikte aus Win16 sind.
Nagut ... mit Atomen mach ich ja eh nichts und damit das programm erstmal läuft hatte ich eh kurz nach dem Auftauchen dieses "Dings" alles kleiner unter $00010000 (also $0000..$FFFF) über ein nettes If in der CallBackFunktion ignoriert ... daß meine Pointer nicht in diesem Bereich liegen können war mir schon klar (ich kann schließlich keinen SpeicherBlock an der Position $00000000 reservieren).

Ich wollte halt nur gern wissen was und warum sich da irgendwas eingenistet hat, was eigentlich hätte nicht da sein soll.

Außerdem dachte ich ja Atoms, "Longs" (Set-/GetWindowLong) und Properties werden einzeln verwaltet und mir ja die Vermutung nah ging, daß mit EnumProps nur die Properties aufgeliestet werden -.-''
$2B or not $2B
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#6

Re: EnumProps liefert immer LeerProperty?

  Alt 1. Jun 2006, 15:42
Zitat von himitsu:
Außerdem dachte ich ja Atoms, "Longs" (Set-/GetWindowLong) und Properties werden einzeln verwaltet und mir ja die Vermutung nah ging, daß mit EnumProps nur die Properties aufgeliestet werden -.-''
Das ist ja auch durchaus auch so, aber diese Relikte tauchen eben dennoch auf und taugen für bestimmte Sachen auch immernoch recht gut.

Hast du dich noch nicht gefragt, warum unter MSDN-Library durchsuchenSetProp unter anderem auf MSDN-Library durchsuchenGlobalAddAtom verwiesen wird? Versuch doch mal MSDN-Library durchsuchenGlobalGetAtomName, dann bekommst du vielleicht ein Gefühl dafür woher besagtes Atom stammt
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: EnumProps liefert immer LeerProperty?

  Alt 2. Jun 2006, 11:33
Na ja ... versuchen kann ich's ma ... ma gucken was ich fühle (aßer dem Schmerz gerade ... seit 2 Stunden ... ~ 1,5*0,7 cm Haut vom Finger gerissen ... aber vielleicht lenkt es ja ab ^^)
$2B or not $2B
  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 04:37 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