Delphi程式中彈出和關閉CD-ROM

來源:互聯網
上載者:User

         要在Delphi程式中控制CD-ROM的彈出和關閉,可以利用MMSystem.pas單元的MCI(Media Control Interface)函數。有2個函數可以達到同樣的效果。一個是mciSendCommand函數,另一個是mciSendString函數。下面分別用這2個函數寫的OpenCDDrive函數。

        1、使用mciSendCommand:

function OpenCDDrive(IsOpen: Boolean; DriveName: char = #0): Boolean;
var
  op: TMCI_Open_Parms;
  flags: LongWord;
begin
  FillChar(op, Sizeof(TMCI_Open_Parms), 0);
  op.lpstrDeviceType := PChar(MCI_DEVTYPE_CD_AUDIO);
  flags := MCI_OPEN_TYPE or MCI_OPEN_TYPE_ID;
  if DriveName <> #0 then
  begin
    op.lpstrElementName := PChar(DriveName + ':');
    flags := flags or MCI_OPEN_ELEMENT;
  end;
  Result := mciSendCommand(0, MCI_OPEN, flags, LongWord(@op)) = 0;
  if not Result then Exit;
  if IsOpen then
    mciSendCommand(op.wDeviceID, MCI_SET, MCI_SET_DOOR_OPEN, 0)
  else
    mciSendCommand(op.wDeviceID, MCI_SET, MCI_SET_DOOR_CLOSED, 0);
  mciSendCommand(op.wDeviceID, MCI_CLOSE, MCI_WAIT, 0);
end;

        2、使用mciSendString:

function OpenCDDrive(IsOpen: Boolean; DriveName: char = #0): Boolean;
var
  s: string;
begin
  if IsOpen then s := 'open'
  else s := 'closed';
  if DriveName = #0 then
    Result := mciSendString(PChar('set cdaudio door ' + s), nil, 0, 0) = 0
  else
  begin
    Result := mciSendString(PChar('open ' + DriveName +': type cdaudio alias cdrom'), nil, 0, 0) = 0;    if Result then    begin
        mciSendString(PChar('set cdrom door ' + s), nil, 0, 0);
        mciSendString('close cdrom', nil, 0, 0);    end;
  end;
end;

        OpenCDDrive函數有2個參數,IsOpen為True彈出CD-ROM,False關閉RD_ROM;DriveName為CD-ROM磁碟機名稱,預設為#0。返回True成功,否則失敗。

        開啟和關閉預設CD-ROM,即第一個CD-ROM磁碟機可以分別用:

        OpenCDDrive(True);和OpenCDDrive(False);

        使用CD-ROM磁碟機名稱調用可以分別為(假設CD-ROM磁碟機名稱為“F:”):

        OpenCDDrive(True, 'F');和OpenCDDrive(False, 'F');

        如有錯誤請指正:maozefa@hotmail.com

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.