光驱弹出、弹入触发哪个事件?怎么写?(10分)

  • 主题发起人 主题发起人 嫩手
  • 开始时间 开始时间

嫩手

Unregistered / Unconfirmed
GUEST, unregistred user!
光驱弹出、弹入触发哪个事件?怎么写?
 
没有事件,有API函数。
//打开
MciSendString('Set CdAudio do
or open wait', nil, 0, handle);
//关闭
MciSendString('Set CdAudio do
or closed wait', nil , 0, handle);
 
补充一下,记着引用 MMSYSTEM 单元
uses MMSYSTEM;
 
不是吧。这个问题什么地方都有。
 
我是说将触发哪个事件?比如我用手弹开、关闭后,系统接收哪个事件?怎么处理,
就像超级解霸那样,进张光盘,如果是VCD就自动播放,我想它不可能用个计时器,每秒都
在检查吧!
 
是啊
楼上几位理解错了
还有就是怎么锁住CD
 
打开或关闭会有系统消息发出的,你在WinProc中截获那个消息就可以了嘛
 
我记得好象是触发一个硬件信息改变的消息.但具体是哪个我忘了.
 
我记得好象是触发一个硬件信息改变的消息.但具体是哪个我忘了.
 
b]控制CD-ROM的弹出和关闭/判断是否有盘[/b]
在uses中添加mmsystem。
procedure TsystemForm.Button28Click(Sender: TObject);
begin
mcisendstring('set cdaudio do
or
open',nil,0,handle);//Open
end;

procedure TsystemForm.Button29Click(Sender: TObject);
begin
mcisendstring('set cdaudio do
or
closed',nil,0,handle);//Close
end;

包括判断是否有盘
uses mmSystem;

var
MCIO : TMCI_Open_Parms;
MCIS : TMCI_Status_Parms;

begin

MCIO.lpstrDeviceType := PChar(MCI_DEVTYPE_CD_AUDIO);
if mciSendCommand(0, MCI_OPEN, MCI_OPEN_TYPE or
MCI_OPEN_TYPE_ID or
MCI_OPEN_SHAREABLE, LongInt(@MCIO) )= 0 then

begin

MCIS.dwItem := MCI_STATUS_READY;
mciSendCommand(MCIO.wDeviceID, MCI_STATUS,
MCI_STATUS_ITEM
or MCI_WAIT, LongInt(@MCIS));
if MCIS.dwReturn<> 0 then

mciSendCommand(MCIO.wDeviceID, MCI_SET,
MCI_SET_DOOR_OPEN, 0)
else

mciSendCommand(MCIO.wDeviceID, MCI_SET,
MCI_SET_DOOR_CLOSED, 0);
mciSendCommand(MCIO.wDeviceID, MCI_CLOSE, MCI_WAIT,
0);
end;

end.
 
我不要这些,只要触发哪些事件?怎么去接收事件?怎么去处理,该怎么写?
 
不触发事件。需要使用保留的API挂监视钩子
 
怎么写呀?能不能给个能通过的例子?
 
关注…
希望有高人解答…
 
这里有知道的吗?请一定帮忙呀
 
这个问题我以前看过,有人回答了。
好像是用Hook。
具体我不太清楚。
 
知道是哪贴吗?
 
很难吗?怎么这么长时间都得不到结果?应该是有办法的,但高手为什么不肯透露些呢?
 
后退
顶部