Entwickler-Ecke
Dateizugriff - Programm überprüfen....falls inaktiv starten
AZRAEL - Do 28.11.02 20:23
Titel: Programm überprüfen....falls inaktiv starten
Hi Leute bin absolut neu hier und in Delphi. Ich hab vor ein Programm zu schreiben was mir das ein oder andere Programm aufruft falls es inativ wird. Leider hab ich keine Ahnung wie ich sowas anstellen kann ! Hat jemand von euch ne idee wie ich ein Programm erst starten kann und dann beobachten kann ob es aktiv bleibt ? sobald es inaktiv wird soll das Programm neugestartet werden.
Wäre euch dankbar wenn ihr mir dass in Form von nem Quelltext zukommen lassen könntet da ich noch net so die Ahnung vom Programmieren in Delphi hab :_(
Danke & Gruß
Alex
Andreas Pfau - Fr 29.11.02 00:06
Du brauchst zuerst einen Timer, den du z.B. auf Interval=1000 stellst (einmal pro Sekunde überprüfen).
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| uses {...}, ShellApi;
{...}
implemetation
{...}
procedure TForm1.Timer1Timer(Sender: TObject); var H: Hwnd; begin H := FindWindow(Nil, PChar('FensterTitel')); If H = 0 Then ShellExecute(0, Nil, PChar('C:\Programme\Programm\Programm.exe'), Nil, Nil, Sw_ShowNormal); end; |
Delete - Fr 29.11.02 00:30
Das wollte er nicht. Du startets jedes mal das Programm, wenn es geschlossen wurde. Ich denke, er wollte dem Fenster wieder den Focus geben, wenn es den Focus verliert.
Ich hoffe, dir ist klar, dass man, wenn man das schaft, mit keinem anderen Programm mehr arbeiten kann. :evil:
Lösung wäre ein System-Hook. Siehe mein LuckieSpy (mit Source).
AZRAEL - Fr 29.11.02 00:33
wenn ich dass richtig sehe funzt dass Programm aber nur wenn das "beobachtete" Programm ein offenes fenster besitzt .. richtig ?
bei dem programm welches es am laufen halten soll gibt es dass jedoch net, es wird nur im Taskmanager von 2000 und XP gelistet (es handelt sich hierbei um ein Seti Client) und daher müsste dass programm direkt auf den Taskmanager zugreifen können ....
Gruß
Alex
Edit: ja genau darum geht es ... wieso kann ich dann mit keinem anderen programm mehr arbeiten ? was würde mich daran hindern ? ich kann das programm ja alle 5 sekunden abfragen lassen dass dauert ja net die welt normal dann könnte ich mit leichten verzögerungen andere programme dennoch ausführen oder nicht ?
Delete - Fr 29.11.02 00:35
Was soll das denn werden? Wie soll ein Programm ohne Fenster den Fokus erhalten? :shock:
Und wenn es nur im Taskmanager auftaucht, scheint es sich wohl um einen Service zu handeln.
AZRAEL - Fr 29.11.02 00:39
es handelt sich um einen Seti Client der nur von der Registrierung aus gestartet wird und dann den den ganzen windows betrieb lang läuft (bzw. laufen sollte) leider stürzt dass programm ab und zu ab und startet sich nicht von selbst neu ! daher will ich dass programm schreiben welches den tastmanager nach dem programm durchsucht und sobat es verschwindet wieder neustartet ....
Delete - Fr 29.11.02 00:46
Es ist also ein Dienst. Sag das doch endlich mal. Einen Dienst kannst du nicht einfach so wie ein normales Programm über einen Doppelklick im Explorer starten.
Dienste lassen sich mit dem Konsolenbefehl net start <Dienstname> starten. Das könntest du mit Shellexecute realisieren. Oder eben manuel über Startmün -> Verwaltung -> Dienste.
So, um nun zu kucken, ob der Prozess noch läuft mußt du einen Snapshot machen. Stichwort: CreateToolHelp32Snapshot. Kuck dir mal meinen ProcViewer an auf meiner Seite.
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!