Erstmal allen ein frohes neues Jahr und danke für die schnelle Hilfe.
Nur so eine Idee: könntest Du nicht mit Code in der Art
Delphi-Quellcode:
var
ErrMode: UINT;
begin
ErrMode := SetErrorMode(SEM_FAILCRITICALERRORS);
try
//arbeiten
finally
SetErrorMode(ErrMode);
end;
die System-Fehlermeldungen temporär an Dein Programm weiterleiten und anschließend den alten Zustand wiederherstellen?
Hab einfach mal das Form-Create wie folgt angepasst:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate(ExtractFilePath(Application.ExeName) + 'index.htm');
SetErrorMode(SEM_FAILCRITICALERRORS);
end;
Die Fehlermeldung kommt jetzt nicht mehr und das Programm terminiert vernüftig.
Ich habs ins Form-Create eingefügt, da ich ja nicht genau weiß wann und wo (in welcher Routine) die Windows-Meldung hineinplatzt, aber ich vermute das meine Methode TForm1.WMDeviceChange(var Msg: TMessage) nicht auf das nicht bereite CD/DVD-Laufwerk zugreift.
Ich werd aber gleich mal den Aufruf von SetErrorMode() nach TForm1.WMDeviceChange verschieben und testen.
MfG Eagleeye