Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fenstertitel mit Sonderzeichen auslesen [Beantwortet] (https://www.delphipraxis.net/119155-fenstertitel-mit-sonderzeichen-auslesen-%5Bbeantwortet%5D.html)

mleyen 21. Aug 2008 08:33


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:
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;
Beispiel: (Anhang)
Code:
Handle:                                   "986848"
Fenstertitel:                             "¿oOЍЦЙήμλγ.txt - Editor"
Mit meinem Code ausgelesener Fenstertitel: "¿oO????μ??.txt - Editor"
So, wie bekomm ich jetzt den richtigen Titel raus?
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:

Bernhard Geyer 21. Aug 2008 08:47

Re: Fenstertitel mit Sonderzeichen auslesen
 
Du brauchst SendMessageW nicht die Ansi-Version SendMessage

Luckie 21. Aug 2008 08:51

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