Moin,
ich habe in einer Software eine umfangreiche Initialisierung von Hardware. Ich brauche also eine Absicherung gegen einen Mehrfachaufruf des Programms. Die wird in der initialization-Klausel aufgerufen, ebenso wie die Initialisierung der Hardware. Zu Beginn hatte ich das so verwendet:
Delphi-Quellcode:
ProgHandle := CreateMutex(nil, True, 'Anwendung');
if GetLastError = ERROR_ALREADY_EXISTS then
begin
Application.Terminate;
end;
Im Test schlug das fehl, weil es doch noch Hardwarezugriffe gab.
Ich habe es erstmal gelöst, indem ich das Terminate durch HALT ersetzt habe, würde aber gerne wissen, ob die Initialisierung des Programms auch bei Terminate noch voll durchlaufen wird oder wie das Verhalten tatsächlich ist. Laut Hilfe ruft Terminate postQuitMessage auf. Wenn das aber erst nach Abschluss der Programminitialisierung verarbeitet wird, muss ich das umstrukturieren.
Grüße, Messie