Hallo erstmal allen Nutzern dieses Forums,
ich arbeite grad an einem CD/DVD-Menü für ein Projekt. Es ist auch alles soweit schick und fertig.
Nur wenn die CD/DVD ausgeworfen wird während das Programm noch läuft gibt es folgende Fehlermeldung:
autostart.exe - Kein Datenträger (siehe angehängtes Bild)
Das Programm soll sich schlicht beenden beim CD-Auswurf, aber das tut es erst wenn man einmal die Fehlermeldung weggeklickt hat.
Das merkwürdige ist das die Meldung nur dann auftritt, wenn das Programm von einer echten CD ausgeführt wird.
Bei Ausführung des Programms von einem USB-Stick oder einem virtuellen CD-Laufwerk (Virtual CloneDrive 5.4.5.0) funktioniert es,
d.h. das Programm wird ohne Meldung beendet sobald der Stick abgezogen wird oder wenn das Image unmounted wird.
Ich verwende folgenden Code:
Delphi-Quellcode:
{$SetPEFlags IMAGE_FILE_EXECUTABLE_IMAGE}
{$SetPEFlags IMAGE_FILE_NET_RUN_FROM_SWAP}
{$SetPEFlags IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP}
und
Delphi-Quellcode:
procedure TForm1.WMDeviceChange(
var Msg: TMessage);
var
ptr: PDev_Broadcast_HDR;
volptr: PDev_Broadcast_Volume;
begin
try
if (Msg.WParam = DBT_DEVICEREMOVECOMPLETE)
and (Msg.LParam <> 0)
then
begin
ptr := Pointer(Msg.LParam);
if ptr.dbch_devicetype = DBT_DEVTYP_VOLUME
then
begin
volptr := Pointer(ptr);
if UpperCase(ExtractFileDrive(Application.ExeName))[1] = GetDriveLetter(volptr^.dbcv_unitmask)
then
Application.Terminate;
end;
end;
except
{$IFDEF DEBUG}
on E:
Exception do
ShowMessage('
Fehler in WMDevicechange: ' + E.
Message);
{$ENDIF}
end;
end;
Hab ein Testprojekt zusammen gestellt zum Download. Vielleicht hat von euch jemand ne gute Idee wie ich die Fehlermeldung unterdrücken kann.
Ansonsten wünsche ich allen schonmal ein frohes Weihnachtsfest.
MfG Eagleeye