cdrom.dpr

来自「可以控制多个光驱」· DPR 代码 · 共 72 行

DPR
72
字号
library cdrom;

uses
  Windows, Mmsystem;

{$R *.res}

function OpenCDROM(Drive: pChar): Boolean;stdcall; // 打开CDROM
var
  Res: MciError;
  OpenParm: TMCI_OPEN_Parms;
  Flags: Dword;
  s: string;
  DeviceID: Word;
begin
  Result := false;
  s := Drive + ':';
  flags := mci_Open_Type or mci_Open_Element;
  with OpenParm do
  begin
    dwCallBack := 0;
    lpstrDeviceType := 'CDAudio';
    lpstrElementName := PChar(s);
  end;
  Res := mciSendCommand(0, mci_Open, Flags, Longint(@OpenParm));
  if Res <> 0 then exit;
  DeviceID := OpenParm.wDeviceID;
  try
    Res := mciSendCommand(DeviceID, MCI_SET, MCI_SET_DOOR_OPEN, 0);
    if Res = 0 then exit;
    Result := True;
  finally
    mciSendCommand(DeviceID, mci_Close, Flags, Longint(@OpenParm));
  end;
end;

function CloseCDROM(Drive: pChar): Boolean;stdcall; // 关闭CDROM
var
  Res: MciError;
  OpenParm: TMCI_OPEN_Parms;
  Flags: Dword;
  s: string;
  DeviceID: Word;
begin
  Result := false;
  s := Drive + ':';
  flags := mci_Open_Type or mci_Open_Element;
  with OpenParm do
  begin
    dwCallBack := 0;
    lpstrDeviceType := 'CDAudio';
    lpstrElementName := PChar(s);
  end;
  Res := mciSendCommand(0, mci_Open, Flags, Longint(@OpenParm));
  if Res <> 0 then exit;
  DeviceID := OpenParm.wDeviceID;
  try
    Res := mciSendCommand(DeviceID, MCI_SET, MCI_SET_DOOR_CLOSED, 0);
    if Res = 0 then exit;
    Result := True;
  finally
    mciSendCommand(DeviceID, mci_Close, Flags, Longint(@OpenParm));
  end;
end;

exports //dll文件导出的函数列表
OpenCDROM,
CloseCDROM;

begin
end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?