Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: Fenstername und Dateiname aus Handle herausfinden

  Alt 9. Mär 2012, 18:37
Das ist halt immer soeine Sache.
Zitat von GetWindowText:
The maximum number of characters to copy to the buffer, including the null character. If the text exceeds this limit, it is truncated.
Zitat von GetWindowTextLength / WM_GETTEXTLENGTH:
The return value is the length of the text in characters, not including the terminating null character.
Der Wert gibt dort die Länge des Speichers an, inklusive der abschließenden #0.
In dem String selber ist aber kein Platz für diese letzte #0 reserviet. OK, indirekt schon, denn im Delphistring wird implizit eine #0 hinter dem Stringinhalt abgelegt.
Bei GetWindowText muß also diese zusätzliche #0 mit angegeben werden, da sonst das letzte Text-Zeichen abgeschnitten würde.

Jetzt kommt es nur noch drauf an, wohin PChar zeigt, bei einem Leer-String. (ein '' ist nil und PChar zeigt dann Ersatzweise wo anders hin, wo #0#0 im Speicher hinterlegt ist)
Bei dir war das anscheinend ein Schreibgeschützter Bereich, bzw. bei mir zufällig nicht.

Delphi-Quellcode:
SetLength(T, GetWindowTextLength(hwnd));
if T <> 'then
  GetWindowText(hwnd, PChar(T), Length(T) + 1);
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 9. Mär 2012 um 18:40 Uhr)
  Mit Zitat antworten Zitat