Die meisten Fenster werden gefunden, aber eben einzelne partout nicht.
Weil die Fenstertitel mit Paste/Copy übertragen werden und auch visuell
verglichen werden, schließe ich die Variante "Leerzeichen vergessen" aus.
WinSpy kann ich auf dem fremden Rechner nicht einsetzen. Scheidet aus.
Hier auf Wunsch der Code zum Problem:
Fenster auflisten Code:
Delphi-Quellcode:
function EnumWinProc(Wnd: THandle; LParam: LongInt): Boolean; stdcall;
var
WinCaption : string;
Len: integer;
begin
Result := True;
Len := GetWindowTextLength(Wnd);
SetLength(WinCaption, Len);
GetWindowText(Wnd, PChar(WinCaption), Len+1);
if Trim(WinCaption) <> '' then
Form1.Memo2.Lines.Add(Format('%.6x : %s', [Wnd, WinCaption]));
end;
procedure TForm1.BtnEnumWindowsClick(Sender: TObject);
begin
Memo2.lines.Clear;
EnumWindows(@EnumWinProc, 0);
end;
Fenster abfragen Code:
Delphi-Quellcode:
procedure TForm1.BtnEnumChildsClick(Sender: TObject);
var hmain, hsub : HWND;
ilen : integer;
ptext : pChar;
fenstername : string;
begin
Memo2.clear;
fenstername := Edit_Fenstername.Text;
if fenstername = '' then exit;
hmain := FindWindow(nil, PChar(fenstername));
// if hmain = 0 then ShowMessage(inttostr(GetLastError()));
if hmain <> 0 then // Fenster vorhanden!
ShowMessage('Fenster gefunden: ' + fenstername)
else
ShowMessage('Fenster NICHT gefunden: ' + fenstername);
end;
GetLastError war immer 0, deshalb auskommentiert.