Delphi程式中彈出和關閉CD ROM

2021-04-13 06:51:43 字數 2167 閱讀 1724

要在delphi程式中控制cd-rom的彈出和關閉,可以利用mmsystem.pas單元的mci(media control inte***ce)函式。有2個函式可以達到同樣的效果。乙個是mcisendcommand函式,另乙個是mcisendstring函式。下面分別用這2個函式寫的opencddrive函式。

1、使用mcisendcommand:

function opencddrive(isopen: boolean; drivename: 

char=#

0): boolean;

varop: 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;

ifdrivename 

<>#0

then

begin

op.lpstrelementname :

=pchar(drivename +'

:');

flags :

=flags or mci_open_element;

end;

result :

=mcisendcommand(

0, mci_open, flags, longword(@op)) =0

;ifnot result then exit;

ifisopen 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;

vars: 

string

;begin

ifisopen then s :='

open

'else

s :=

'closed';

ifdrivename =#

0then

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]

Delphi程式中彈出和關閉CD ROM

要在delphi程式中控制cd rom的彈出和關閉,可以利用mmsystem.pas單元的mci media control inte ce 函式。有2個函式可以達到同樣的效果。乙個是mcisendcommand函式,另乙個是mcisendstring函式。下面分別用這2個函式寫的opencddri...

在Service中彈出Toast和Dialog

眾所周知,toast必須在ui主線程上才能正常顯示,而在service中是無法獲得acivity的context的,在service中想顯示出toast只需將show的訊息傳送給主線程looper就可以了 handler handler new handler looper.getmainloope...

在MFC程式中彈出命令列視窗除錯

這就是在mfc程式中彈出命令列視窗除錯。1 include 2 在需要開啟控制台視窗的地方呼叫 allocconsole 注意檢查返回值 3 freopen conout w stdout 這句話不管是否有中文出現都要加進去,否則會出現不顯示情況 4 在需要輸出除錯的時候呼叫 cprintf等函式 ...