AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ist Anwendung noch aktiv

Ein Thema von Kosta · begonnen am 29. Dez 2002 · letzter Beitrag vom 1. Jan 2003
Antwort Antwort
Seite 1 von 3  1 23      
Kosta

Registriert seit: 27. Dez 2002
18 Beiträge
 
Delphi 7 Enterprise
 
#1

Ist Anwendung noch aktiv

  Alt 29. Dez 2002, 18:55
Hallo ich habe ein Programm geschrieben, dass die Kommunikationsordner zweier anderen Programme kontrolliert
es werden laufend von Prog. 1 Dateien in Ordner 1 gestellt und von Prog.2 dort abgeholt.
Mein Programm kontrolliert ob die Dateien nicht zu lange im Ordner bleiben. - so weit so gut
jetzt mein Problem was passiert wenn Prog.1 sich aufhängt ?
Wie kann ich feststellen ob die beiden Progr.noch laufen
und wie kann ich dann die Prozesse abschießen ?
Danke im Voraus
Kosta[/b]
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 30. Dez 2002, 03:13
Moin Kosta,

zur Überprüfung ob die Programme noch laufen, wäre die API Funktion SendMessageTimeout geeignet.

Abschiessen kannst Du die Prozesse dann mittels TerminateProcess.
Diese Funktion sollte aber nur in Notfällen angewandt werden, da eventuelle Aufräumarbeiten (z.b. Freigabe von Resourcen, wie Speicher oder Handles) nicht mehr durchgeführt werden.

Schau Dir die Funktionen doch mal im PSDK an.

Sind die Programme, die überwacht werden müssen auch eigene oder sind es Fremdprogramme?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3
  Alt 30. Dez 2002, 04:02
Zitat von Christian Seehase:
Abschiessen kannst Du die Prozesse dann mittels TerminateProcess.
Diese Funktion sollte aber nur in Notfällen angewandt werden, da eventuelle Aufräumarbeiten (z.b. Freigabe von Resourcen, wie Speicher oder Handles) nicht mehr durchgeführt werden.
Falsch, das habe ich früher auch gedacht. Im Richter habe ich dann was anderes gelesen. So bald ein Process beendet wird, räumt Windows den Speicher komplett wieder auf, so das der Speicher, die Ressourcen und ähnliches Windows wieder zur Verfügung stehen.

Dies wird auch vom PSDK mehr oder weniger bestätigt:
Zitat:
Terminating a process causes the following:
  1. All object handles opened by the process are closed.
  2. All threads in the process terminate their execution. Each thread exits when all its pending I/O has been completed or canceled. The process exits after all its threads exit.
  3. The state of the process object becomes signaled, satisfying any threads that had been waiting for the process to terminate. The process object is deleted when the last handle to the process is closed.
  4. The states of all threads of the process become signaled, satisfying any threads that had been waiting for the threads to terminate.
  5. The termination status of the process changes from STILL_ACTIVE to the exit value of the process.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 30. Dez 2002, 04:16
Moin Luckie,

hast Du auch wieder recht. Ich hab's gerade mal nachgelesen.
Aber zuraten tut er auch nicht gerade.

Wie auch immer, beim aktuellen Problem spielt's zum Glück eh' keine Rolle.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5
  Alt 30. Dez 2002, 04:29
Zitat von Christian Seehase:
Aber zuraten tut er auch nicht gerade.
Das habe ich auch nicht gesagt.

Man sollte nur im Programm selber nicht mehr benötigte Ressourcen freigeben, sonst schießt man sich gerade unter Win9x selber in den Fuß.

@Dingsbums: Kuck mal unter OpenSource, da habe ich gerade ein Programm vorgestellt, welches alle laufenden Prozesse auflistet. (Geht auch unter Consumer Windows, nur wird da bei den Modulen Müll ausgegeben - mehr oder weniger. Wenn du es also unter Win9x brauchst, nimm die Abfrage im Hauptprogramm raus. Das mit den Prozessen geht auch unter Win9x.)
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Kosta

Registriert seit: 27. Dez 2002
18 Beiträge
 
Delphi 7 Enterprise
 
#6
  Alt 30. Dez 2002, 08:07
Hi Chris
Danke für deinen Tip
Blos wie soll ich das machen mit SendMessageTimeout
kannst du mir ein kleine Beispiel erstellen
lt. Delphi-Hilfe muß ich
SendMessageTimeout(
HWND hWnd, // handle of destination window
UINT Msg, // message to send
WPARAM wParam, // first message parameter
LPARAM lParam, // second message parameter
UINT fuFlags, // how to send the message
UINT uTimeout, // time-out duration
LPDWORD lpdwResult // return value for synchronous call
);
das alles übergeben
woher bekomm ich das alles wenn ich nur weiß dass das Programm
Prog.exe heißt ?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7
  Alt 30. Dez 2002, 08:10
Wenn du nur den Namen der Exe kennst, dann ist es über einen SnapShot und Terminateprocess am einfachsten. Es sei denn du kennst Fensterklasse und Titel des Hauptfensters der Anwendung.
Sag uns mal, was du hast oder rausbekommen könntest, dann können wir dir weiterhelfen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Kosta

Registriert seit: 27. Dez 2002
18 Beiträge
 
Delphi 7 Enterprise
 
#8
  Alt 30. Dez 2002, 14:04
Ich habe den Namen der EXE-Datei (lt.Taskmanager / Prozesse)
bzw. der Text der ebenfalls im Taskmanager unter Anwendungen steht.

somit denke ich mir dass ich eine Funktion bastle, die dann wie folgt
aussieht

Funktion AplAktiv(ProzessName:String) : boolean;
begin
wass soll ich hier reinschreiben ?
end;
Procedure KillApl(ProzessName : string);
begin
was muß hier stehen
end;
Procedure TForm1.Button1Click(Sender : Tobject);
Begin
If AplAktiv('winword.exe') then // das soll nur true sein wenn Programm gestartet & reagiert

alles ok

else
KillApl('winword.exe');

ich weiß für euch ist das sicher ein klax - aber ich konnte nirgends etwas finden.
noch besser wäre eine Funktion die mir folgende Informationen gibt
1) Prog. läuft
2) Prog. reagiert nicht
3) Prog. nicht gestartet
Kosta
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#9
  Alt 30. Dez 2002, 15:11
Moin Kosta,

dazu noch mal ein paar Fragen:
Müssen eigene Programme überwacht werden?
Ist bekannt wo die Programme liegen (Pfad)?
Werden die Programme von Deinem Programm aus gestartet?

Ein allgemeiner Tip noch:
Die Hilfe zur Windows API, die bei Delphi mitgeliefert wird (ich hab' selber ja auch D5 Pro) ist, gelinde gesagt, museumsreif.

Besorg' Dir am Besten mal das aktuelle MS PSDK.
(PSDK)

Sind, vollständig, allerdings so 350 MB, also nicht gerade ISDN tauglich. Man kann aber auch weniger herunterladen.

Wie ich gerade gesehen habe ist Oktober 2002 die aktuelle Version.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Brüggendiek

Registriert seit: 13. Dez 2002
Ort: Dortmund
275 Beiträge
 
Delphi 5 Standard
 
#10
  Alt 30. Dez 2002, 15:21
Hallo Christian!


Zitat von Christian Seehase:
Die Hilfe zur Windows API, die bei Delphi mitgeliefert wird (ich hab' selber ja auch D5 Pro) ist, gelinde gesagt, museumsreif.
Kann ich nur bestätigen. Wenn man das Wort kennt, hilft F1 weiter, aber sonst geht nichts. Abhilfe: die mitgelieferte WIN32.hlp direkt aufrufen - dann kann man da auch suchen.
Ansonsten ist D5 ja schon älter und damit auch die API-Hilfe.

Gruß

Dietmar Brüggendiek
Dietmar Brüggendiek
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz