Einzelnen Beitrag anzeigen

Daniel G
(Gast)

n/a Beiträge
 
#1

Laufwerksschublade ein- oder ausfahren

  Alt 18. Jun 2006, 13:02
Mit diesen beiden Funktionen kann man die Laufwerksschublade eines beliebigen CD/DVD - Laufwerks ein- oder ausfahren. Die Ursprungsfunktion zum Einfahren der Schublade kommt von skunker aus diesem Thread

Delphi-Quellcode:
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);
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);
end;
Beispielaufruf:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  LoadMedia('D');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  EjectMedia('D');
end;
//Edit: Windows Version hinzugefügt

[edit=Chakotay1308]Code-Formatierung. Mfg, Chakotay1308[/edit]
  Mit Zitat antworten Zitat