So, habe mal ein wenig herumprobiert.
Wenn ich TextLength * 4 funktioniert's.
Stimmt's etwa so oder gibt's noch was anderes zu beachten?
Delphi-Quellcode:
function GetWindowText(wnd: HWND): WideString;
var
TextLength: Integer;
Text: PWideChar;
begin
Result := '';
if wnd = 0 then
Exit;
TextLength := SendMessageW(wnd, WM_GETTEXTLENGTH, 0, 0);
if TextLength <> 0 then
begin
GetMem(Text, TextLength * 2 + 1);
SendMessageW(wnd, WM_GETTEXT, TextLength + 1, Integer(Text));
Result := Text;
FreeMem(Text);
end;
end;