AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Fenstertitel mit Sonderzeichen auslesen [Beantwortet]
Thema durchsuchen
Ansicht
Themen-Optionen

Fenstertitel mit Sonderzeichen auslesen [Beantwortet]

Ein Thema von mleyen · begonnen am 21. Aug 2008 · letzter Beitrag vom 21. Aug 2008
Antwort Antwort
Benutzerbild von mleyen
mleyen

Registriert seit: 10. Aug 2007
609 Beiträge
 
FreePascal / Lazarus
 
#1

Fenstertitel mit Sonderzeichen auslesen [Beantwortet]

  Alt 21. Aug 2008, 09:33
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.

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.
Danke.

Mfg,
spawn

Edit:
Super, danke!
So einfach war´s.
Frage innerhalb von ~viertel Stunde geklärt.
Miniaturansicht angehängter Grafiken
findwintest_194.png  
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Fenstertitel mit Sonderzeichen auslesen

  Alt 21. Aug 2008, 09:47
Du brauchst SendMessageW nicht die Ansi-Version SendMessage
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Fenstertitel mit Sonderzeichen auslesen

  Alt 21. Aug 2008, 09:51
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;
Michael
Ein Teil meines Codes würde euch verunsichern.
  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 06:18 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