Wie Du schon in der ersten Antwort geschrieben hast:
Luckie schrieb:
| Zitat: |
Allerdings weiß ich nicht, wie viel Zeit dir Windows noch gibt, |
Die Zeit reicht einfach nicht.
Vieleicht sollte ich etwas weiter ausholen damit Du mein Problem besser verstehen kannst. Ein "anderes" Programm welches von mir nicht gesteuert werden kann, sendet den Befehlt Rechner neustart ab. Danach beendet es sich und der Rechner fährt runter und wieder hoch. Sobald das Programm beendet wurde und der Rechner nocht nicht neugestartet wurde muss eine vorher erstellte Datei in einen anderen Ordner kopiert werden. Während der Laufzeit des Programmes sind Änderungen an der Datei nicht möglich, weil diese sofort wieder rückgängig gemacht werden. Mein Prog soll also, sobald der Rechner herunterfahren soll diese Datei austauschen. Mein Programm wartet also jetzt dank Deiner Procedure auf den Befehl WM_ENDSESSION. Verhindert jedoch das es sich beendet und gleichzeitig überprüft es mit Hilfe einer Komponente ob das andere Programm bereits geschlossen wurde. Ich habe da natürlich auch einen Timer laufen, damit bei einem totalen Crash mein Programm nicht hängen bleibt. Sobalt also das erste Programm sich beendet hat kopiert mein Programm die Datei und beendet sich dann auch. Wenn der Timer zuerst fertig ist, dann beendet sich mein Programm nur und hinterläßt eine Log-Datei mit der Bemerkung das die Daten nicht kopiert wurden. Leider habe ich nicht genügend Zeit für das alles. Aslo habe ich im Ereigniss OnCloseQuery die Variable CanClose so angesteuert das mein Programm sich nur beenden läßt wenn a) Die Datei kopiert wurde oder b) Das Log angelegt wurde. Dummerweise beendet sich mein Programm, aber Windows fährt nicht runter. Auch nicht wenn ich in das Ereigniss OnDestroy nochmals den Befehl über API zum Neustart des Computers geben.
Hast Du vieleicht eine Idea dazu?
cu Patmann[/u]