Autor Beitrag
wolle87
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Do 04.03.10 14:44 
Hi,

folgendes Problem:

ich würde gerne feststellen, ob ein bestimmter Prozess beendet worden ist.
Ich möchte nämlich eine Logout Zeit in einem Grid festhalten wenn eben dieser Prozess beendet worden ist.

Wie könnte ich sowas hinbekommen ?
Danke im Voraus!

Gruß
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 05.03.10 01:41 
Für einzelne Prozesse mit WaitForSingleObject + Handle auf diesen Prozess.

Wenn viele Prozesse, dann Multithreaded + WaitForMultipleObjects.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
ffgorcky
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 573

WIN XP/2000 & 7Prof (Familie:Win95,Win98)

BeitragVerfasst: Fr 05.03.10 22:38 
Also ich gehe mal davon aus, dass der Prozess im gleichen Programm läuft.
Die einzige Lösung, die mir da so spontan einfällt, ist, dass Du eine boolsche Variable nimmst (z.B. prozesslaeuft), die Du dann eben vor dem eigentlichen Prozess eben auf true und danach wieder auf false setzt.

Diese Variable könntest Du dann ja durch einen Timer abfragen, wann sie wieder false ist - dann merkst Du es doch.

Ich denke mal, dass selbst Du hier im Forum noch recht neuer mit dieser Lösung klar kommen müsstest.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 05.03.10 23:24 
user profile iconffgorcky hat folgendes geschrieben Zum zitierten Posting springen:
Also ich gehe mal davon aus, dass der Prozess im gleichen Programm läuft.

Das geht nicht. Ein Prozess ist immer unabhängig von anderen Prozessen und kann nie in einem Prozess laufen, was auch immer damit gemeint ist. Er hat somit auch keinen Zugriff auf den Adressraum eines anderen Prozesses. Ein Prozess kann nur einen Elternprozess haben, nämlich den Prozess, der ihn erzeugt hat. Der zu überwachende Prozess muss vom eigenen Prozess gestartet worden sei. Dann hat man ein Handle, welches man in WaitForSingleObject nutzen kann. Sie dazu auch ShellExecuteAndWait oder wie die Funktion heißt, die in den Foren rumgeistert.

Atlernativ kann man natürlich stöändig alle Prozesse pollen und gucken, ob der entsprechende Prozess noch unter den laufenden Prozessen ist.