Entwickler-Ecke
Dateizugriff - Prozess überwachung...pls HELP ;)
Xelos - Fr 20.09.02 10:15
Titel: Prozess überwachung...pls HELP ;)
Hi...ich bin der neue *g*
Ich hoffe mir kann hier jemand helfen, bevor mich die Leute mit den Habmichlieb Kitteln abholen.
Ich möchte ein Prg schreiben, mit dem ich ein anderes Programm überwachen kann. Also es soll halt schauen, ob das andere Prg läuft und wenn es das nicht tut, dann soll es das wieder starten.
Hat jemand ne Idee wie ich abfragen kann, ob ein Programm aktiv ist?
HELP HELP HELP :cry:
Thxi
Xelos
Cashels - Fr 20.09.02 11:46
Willkommen im Club, 8)
Kuck dir mal die Methode Findwindow an, das müsst das sein was du suchst.
Gruss,
Tom
Delete - Fr 20.09.02 21:32
FindWindow aber in Verbindung mit einem Timer oder Thread, denn schließlich soll -wenn ich das richtig verstanden habe!- das Programm ja wohl dauerhaft überwacht werden:
Zitat: |
Ich möchte ein Prg schreiben, mit dem ich ein anderes Programm überwachen kann. Also es soll halt schauen, ob das andere Prg läuft und wenn es das nicht tut, dann soll es das wieder starten. |
Xelos - Sa 21.09.02 09:59
Also die Hilfe gibt nur FindVCLWindow aus...ich werde daraus nicht so ganz schlau. :oops:
Könnt ihr mir nen kleines Beispiel geben?
Cashels - Sa 21.09.02 10:18
Hi Xelos,
die Funtkion Findwindow aus der Unit Windows liefert dir den Handle eine Fensters. Schmeiss mal eine Editbox und ein Button auf deine Form. Im OnClick Event deines Buttons schreibst du Folgendes:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.Button1Click(Sender: TObject); var H : THandle ; begin H := FindWindow ('TApplication',PChar(edit1.Text)) ; if H <> 0 then Postmessage (H,WM_CLOSE,0,0) ; end; |
edit1.text enthält den Titel deines Fensters. Hast du das Handle gefunden, kannst du, wie im Bsp, ein Event zur Anwendung schicken um sie zu schliessen.
Gruss,
Tom
Xelos - So 22.09.02 05:28
Klappte leider nicht.
Ich hatte es mit dem Taschenrechner von Win ausprobiert.
Habe ins Edit = Rechner eingetragen.
:shock:
Gruss
Xelos
Delete - So 22.09.02 05:50
Versuch es mal so:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39:
| uses tlhelp32;
procedure TForm1.FillListbox; var sl: TStringlist; i: Cardinal; begin try sl := TStringList.Create; GetProcs(sl); Listbox1.Clear; for i := 0 to sl.Count-1 do ListBox1.Items.Add(sl.Strings[i]); finally sl.Free; end; end;
procedure TForm1.GetProcs(sl: TStringlist); var hProcSnap: THandle; pe32: TProcessEntry32; begin { Snapshot machen *PENG* } hProcSnap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0); if hProcSnap = INVALID_HANDLE_VALUE then exit;
pe32.dwSize := SizeOf(ProcessEntry32);
{ wenn es geklappt hat } if Process32First(hProcSnap, pe32) = true then { und los geht's } while Process32Next(hProcSnap, pe32) = true do begin sl.Add(pe32.szExeFile); end; CloseHandle(hProcSnap); end; |
Das listet dir alle laufenden Prozesse in einer Listbox auf. Jetzt kuckst du, ob in der Listbox dein Prozess läuft in einem Timer (bessere wäre in einem Thread, aber wir wollen ja nicht übertreiben) und wenn du ihn nicht findest startest du ihn neu mit
CreateProcess (den Code habe ich hier im Forum auch schon mal gepostet.
Delete - So 22.09.02 05:55
Xelos hat folgendes geschrieben: |
Klappte leider nicht.
Ich hatte es mit dem Taschenrechner von Win ausprobiert.
Habe ins Edit = Rechner eingetragen.
:shock:
Gruss
Xelos |
Kann nicht klappen, die Fensterklasse vom Rechner ist bestimmt nicht
TApplication. Wenn du da
nil übergibst müßte es gehen.
Wobei ich meine Methode bevorzugen würde, setzt allerdings vorraus, dass du den Namen der Exe kennst.
Xelos - So 22.09.02 14:10
fetten Dank an alle ;)
Klappt nun alles.
:D <- ein glücklicher Xelos
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!