Open, Close CD/DVD Tray - Delphi

DarkCoderSc personal avatar
DarkCoderSc

Jean-Pierre LESUEUR

// ...

uses
  System.SysUtils, Winapi.Windows, WinApi.MMSystem;

procedure OpenCloseCD(const ADoOpen : Boolean);
begin
  var ALogicalDrives := GetLogicalDrives();

  var I := -1;
  for var ALetter in ['a'..'z'] do begin
    Inc(I);

    if (ALogicalDrives and (1 shl I)) = 0 then
      continue;

    if GetDriveType(PChar(ALetter + ':')) <> DRIVE_CDROM then
      continue;

    var ATrayAction := '';
    if ADoOpen then
      ATrayAction := 'open'
    else
      ATrayAction := 'closed';

    mciSendString(PWideChar(Format('open cdaudio!%s: alias cdrom%s', [ALetter, ALetter])), nil, 0, 0);
    mciSendString(PWideChar(Format('set cdrom%s door %s wait', [ALetter, ATrayAction])), nil, 0, 0);
  end;
end;

// ...

// Usage:
OpenCloseCD(True);  // Open CD/DVD Tray's
OpenCloseCD(False); // Close CD/DVD Tray's

Implemented By Technique

Featured Windows API


Created

April 9, 2025

Last Revised

April 10, 2025