Dieses Problem bezieht sich auf
Delphi 7.
Hallo,
ich habe folgendes Problem:
Wenn Delphi gestartet wird und nicht alle eingebundenen
Package vorhanden sind, gibts eine Fehlermeldung ('
Package xyz.bpl konnte nicht geladen werden'). Wenn ich nun delphi32.exe beende (den Prozess kille), bleibt die Fehlermeldung auf dem Bildschirm stehen. Die Fehlermeldung gehört nicht delphi32.exe, sondern dem Prozess "csrss.exe". Bei einem neuen Delphi Start kommt es gar nicht erst zu einer Meldung, es wird erst gewartet, bis diese Meldung weg geklickt wurde.
Meine Frage ist nun:
Wie bekomme ich diese Fehlermeldung weg, ohne den Task csrss.exe zu killen.
Damit es nicht so einfach ist, das Ganze läuft nicht im Benutzermodus, sondern als Dienst.
-> Es ist also kein Benutzer angemeldet der das Fenster sehen würde.
Zum Testen habe ich 2 kleine
Package und ein Testprogramm geschrieben.
- Package2.bpl benötigt das Package1.bpl zum starten.
- Project1.exe läd mit LoadPackage('Package2.bpl') das
Package -> Fehlermeldung
- Project1.exe kann nun mit Taskmanager beendet werden (Prozess beenden) -> Die FGehlermeldung bleibt stehen.
Anmerkung:
Was mich wundert ist, dass in der SysUtils.LoadPackage ein
Delphi-Quellcode:
...
raise EPackageError.CreateResFmt(@sErrorLoadingPackage,
[Name,
{$IFDEF MSWINDOWS}SysErrorMessage(GetLastError){$ENDIF}
{$IFDEF LINUX}DLErrorMsg{$ENDIF}]);
...
aufgerufen wird. Dieses raise erzeugt das Fenster, das nicht mehr Delphi gehört. Ein
raise Exception.Create('Test');
bringt eine Fehlermeldung, die aber mit dem Killen des Project1.exe Prozeses weg ist.
Für Eure Hilfe bedanke ich mich schon mal im Voraus