Thema: Delphi CD/DVD Laufwerk öffnen

Einzelnen Beitrag anzeigen

gr4p3fruit

Registriert seit: 14. Nov 2008
8 Beiträge
 
#18

Re: CD/DVD Laufwerk öffnen

  Alt 22. Jun 2009, 22:41
Firma dankt!!!

Delphi-Quellcode:
var
  Form1: TForm1;
  a : boolean;

implementation

{$R *.dfm}

const
  IOCTL_STORAGE_EJECT_MEDIA = $2D4808;
  IOCTL_STORAGE_LOAD_MEDIA = $2D480C;

//Fährt die Schublade ein
function LoadMedia(DriveLetter: String): Boolean;
var
  hr:THandle;
  buffer: Cardinal;
begin
  hr := CreateFile(PChar('\\.\'+DriveLetter+':'), GENERIC_READ,FILE_SHARE_READ or FILE_SHARE_WRITE, NIL, OPEN_EXISTING, 0, 0);
  if hr <> INVALID_HANDLE_VALUE then
    if DeviceIOControl(hr, IOCTL_STORAGE_LOAD_MEDIA, NIL, 0, NIL, 0, buffer, NIL) then
      result := true
     else
      result := false;
    CloseHandle(hr);
  a:=False;
end;

//Fährt die Schublade aus
function EjectMedia(DriveLetter: String): Boolean;
var
  hr:THandle;
  buffer: Cardinal;
begin
  hr := CreateFile(PChar('\\.\'+DriveLetter+':'), GENERIC_READ,FILE_SHARE_READ or FILE_SHARE_WRITE, NIL, OPEN_EXISTING, 0, 0);
  if hr <> INVALID_HANDLE_VALUE then
    if DeviceIOControl(hr, IOCTL_STORAGE_EJECT_MEDIA, NIL, 0, NIL, 0, buffer, NIL) then
      result := true
     else
      result := false;
    CloseHandle(hr);
  a:=True;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 begin
  EjectMedia('D');
  EjectMedia('E');
  EjectMedia('F');
  EjectMedia('G');
  EjectMedia('H');
  EjectMedia('I');
 end;

 Timer1.Enabled:=true;
 hide;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 if a=True

 then
  begin
  LoadMedia('D');
  LoadMedia('E');
  LoadMedia('F');
  LoadMedia('G');
  LoadMedia('H');
  LoadMedia('I');
  end

 else
  begin
  EjectMedia('D');
  EjectMedia('E');
  EjectMedia('F');
  EjectMedia('G');
  EjectMedia('H');
  EjectMedia('I');
 end;

end;

end.
zwar etwas umständlich gelöst, laufwerksbuchstaben sind aber meistens dabei,... man weiß sich eben zu helfen auch als n00b
  Mit Zitat antworten Zitat