Und das heißt jetzt was?
FindWindow gibt im Fehlerfall (Result=0) erweitere Fehlerinfos aus, welche man ebenfalls auswerten/anzeigen könnte.
(z.B. kein Fenster mit diesem Namen gefunden)
Delphi-Quellcode:
if ChromeHWND <> 0
then
...
else
//MessageBox(Handle, PChar('Irgenein Fehlerzusatztext: ' + SysErrorMessage(GetLastError)), 'Fehler', mb_Ok or mb_IconExclamation);
RaiseLastOSError;
Und wenn man statt SentMessage und WM_GETGEXTLENGTH/WM_GETTEXT die APIs GetWindowTextLength und SetWindowText verwendet, dann kann man davon auch die erweiterten Fehlercodes erfahren. (z.B. kein Text-Control)
Zitat:
Delphi-Quellcode:
function GetText(WindowHandle: HWND): string;
var
TxtLength: integer;
Buf: string;
begin
TxtLength := SendMessage(WindowHandle, WM_GETTEXTLENGTH, 0, 0) + 1;
SetLength(Buf, TxtLength);
SendMessage(WindowHandle, WM_GETTEXT, TxtLength, LongInt(@Buf[1]));
Result := Buf;
end;
Diese Funktion ist auch bissl Mist, denn hier ist die abschließende #0 mit im String.
Delphi-Quellcode:
function GetText(WindowHandle: HWND): string;
var
TxtLength: Integer;
begin
TxtLength := SendMessage(WindowHandle, WM_GETTEXTLENGTH, 0, 0);
SetLength(Result, TxtLength);
if TxtLength > 0 then
SendMessage(WindowHandle, WM_GETTEXT, TxtLength + 1, WPARAM(PChar(Result)));
end;
function GetText(WindowHandle: HWND): string;
begin
SetLength(Result, SendMessage(WindowHandle, WM_GETTEXTLENGTH, 0, 0));
if Result <> '' then
SendMessage(WindowHandle, WM_GETTEXT, Length(Result) + 1, WPARAM(PChar(Result)));
end;