So ich habs getestet, aber es geht nicht so wie ich es gerne möchte...^^
Ich nehme and dass die Fensterleisten, welche im 2. EnumWindows ausgelesen werden,
nicht in die StringList gepackt werden. Aus Spaß hab ich nämlich diese Liste einfach mal in eine Textdatei speichern lassen, und siehe da, diese war leer! Kann es vielleicht sein dass es so, wie ich es mir überlegt hab, nicht geht?
Guckt euch das mal bitte an und sagt was ich falsch gemacht hab.
Delphi-Quellcode:
function EnumWin1(hWnd: THandle; FindWin: PString): Boolean; stdcall;
var
WinText: AnsiString;
Task : TStringList;
begin
Result := True;
Task := TStringlist.Create;
if IsWindowVisible(hWnd) and not boolean(GetWindowLong(hWnd, GWL_HWNDPARENT)) then
begin
SetLength(WinText, SendMessage(hWnd, WM_GETTEXTLENGTH, 0, 0));
SendMessage(hWnd, WM_GETTEXT, Length(WinText)+ 1, integer(WinText));
if (length(WinText)> 0) and (WinText <> 'Program Manager') then Task.Add(wintext);
end;
// aktiv ist ne globale variable, wurde vorher schon ermittelt...
if Task.IndexOf(aktiv) = -1 then ShowMessage('Net da');
Task.Free;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var FindWin : String;
begin
FindWin:= 'Unbenannt - Editor';
EnumWindows(@EnumWin1, integer(@FindWin));
end;
Ich könnte die Tasks auch in ein unsichtbares Memo-Fenster ausgeben, diese dann einlesen lassen und das dann mit "aktiv" vergleichen, aber das Gelbe vom Ei ist es sicher nicht.