要在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');
如有错误请指正:[email protected]