![]() |
Fenstertitel mit Sonderzeichen auslesen [Beantwortet]
Liste der Anhänge anzeigen (Anzahl: 1)
Guten Morgen,
ich habe hier ein kleines Problem, auf das ich momentan keine Lösung finde. Und zwar möchte ich den Titel eines Fensters mithilfe eines Handles auslesen. Das richtige Handle und den Titel bekomm ich auch schon. Nur das Problem besteht jetzt darin, dass der Titel komische Sonderzeichen enthalten kann, die ich brauche. (Dazu ein Beispiel im Anhang) Wenn ich diese Sonderzeichen auslese wird bei einigen ein "?" angezeigt. (zB bei "Ѝ") Bei sowas wie ¿ funktioniert es jedoch. :gruebel: Mein momentaner Code zum auslesen des Fenstertitels: (Hier aus der DP, ich mein von Luckie)
Delphi-Quellcode:
Beispiel: (Anhang)
function TForm1.GetText(Wnd: HWND): WideString;
var textlength: Integer; Text: PChar; begin textlength := SendMessage(Wnd, WM_GETTEXTLENGTH, 0, 0); if textlength = 0 then Result := '' else begin GetMem(Text, textlength + 1); SendMessage(Wnd, WM_GETTEXT, textlength + 1, Integer(Text)); Result := Text; // Hier Steht in Text schon der falsche Titel mit den Fragezeichen FreeMem(Text); end; end;
Code:
So, wie bekomm ich jetzt den richtigen Titel raus?
Handle: "986848"
Fenstertitel: "¿oOЍЦЙήμλγ.txt - Editor" Mit meinem Code ausgelesener Fenstertitel: "¿oO????μ??.txt - Editor" Hab auch schon WinSpy getestet und der findet das leider auch so. Hoffe hier hat jemand eine Lösung. :spin: Danke. Mfg, spawn Edit: Super, danke! So einfach war´s. ;) Frage innerhalb von ~viertel Stunde geklärt. :dp: |
Re: Fenstertitel mit Sonderzeichen auslesen
Du brauchst SendMessageW nicht die Ansi-Version SendMessage
|
Re: Fenstertitel mit Sonderzeichen auslesen
Du musst auch die Unicode Variante nehmen: SendMessageW:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var WndCaption: PWideChar; len: Integer; begin len := SendMessage(Handle, WM_GETTEXTLENGTH, 0, 0); if len > 0 then begin len := len * 2; WndCaption := GetMemory(len + 1); if Assigned(WndCaption) then begin SendMessageW(Handle, WM_GETTEXT, len + 1, Integer(WndCaption)); ShowMessage(String(WndCaption)); FreeMemory(WndCaption); end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz