Einzelnen Beitrag anzeigen

Benutzerbild von Aurelius
Aurelius

Registriert seit: 29. Jan 2007
Ort: Erfurt
753 Beiträge
 
Delphi 7 Personal
 
#5

Re: Offene Fenster auslesen + aufs Closen eines best. reagie

  Alt 18. Aug 2007, 12:54
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.
Jonas
  Mit Zitat antworten Zitat