Einzelnen Beitrag anzeigen

Benutzerbild von Aurelius
Aurelius

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

Offene Fenster auslesen + aufs Closen eines best. reagieren

  Alt 16. Aug 2007, 17:53
Hallo DP'ler, ich bins mal wieder

Den Titel konnt ich nicht besser formulieren

Ich möchte in meinem Programm eine Liste aller laufenden Anwendungen/offenen Fenster in einer Listbox ausgeben. In dieser markiert man dann einen Eintrag. Ein Timer soll überprüfen ob der Eintrag noch da ist, sobald dieser verschwunden ist soll der PC heruntergefahren werden. Für alle laufenden Prozesse gibts sowas schon Klick
Ich habe es mit den Fenstern schon so weit gebracht:

Delphi-Quellcode:
var Prozess, aktiv : string;

function EnumWin(hWnd: THandle; FindWin: PString): Boolean; stdcall; // hier wird die erste Liste erstellt
var
  WinText: AnsiString;
begin
  Result := True;
  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 Form1.ListBox1.Items.Add(WinText);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var FindWin: String;
begin
  Listbox1.Clear;
  FindWin:= 'Unbenannt - Editor';
  EnumWindows(@EnumWin, integer(@FindWin));
end;

procedure TForm1.ListBox1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var i : integer;
begin
  if Button = mbLeft then
  begin
    i := Listbox1.ItemIndex;
    Prozess := Listbox1.Items.Strings[i];
    Listbox1.Hint := Prozess;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  aktiv := Prozess;
  Timer1.Enabled := true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin

end;
Überlegt hatte ich mir dass ein 2. EnumWindows die fenster alle in 1 StringList packt und man dann per Schleife guckt ob der markierte Eintrag noch vorhanden ist. Nur weiß ich nicht wie ich das machen soll.
Jonas
  Mit Zitat antworten Zitat