虚拟光驱的 door 是不可以用 mci控制的,我试过 n次了。到 tonyfeng21.51.net 下个 Cd-Rom超级软件开关 玩玩

解决方案 »

  1.   

    编程实现自动弹出和关闭CD托盘 
    7/9/2001 10:2:4· wayne·yesky--------------------------------------------------------------------------------  你肯定问过这个问题:我如何编程实现自动弹出和关闭CD托盘,而不必我用手按开关?好,本文就想谈一谈这个问题。  你们一定对Delphi的TMediaPlayer组件比较熟悉,它是一个相当出色的多用途的多媒体组件,但是美中不足的是:如果CDROM光驱的仓门打开就不能自动关闭。而且不幸的是,TMediaPlayer的方法和属性中没有解决这个问题的办法,所以我们不得不求助于Windows API,具体一些就是使用MMSystem.pas文件,另外一件需要注意的事是:我们可以单独调用Windows API函数,但是TMediaPlayer做了一些内部处理,所以我们就不必担心我们是否使用了组件。所以本例中使用了TMediaPlayer。  第一步 新建一个工程,然后把一个TMediaPlayer 和 TButton拖到它上面。  第二步 在窗体的uses语句中添加一个MMSystem声明。  第三步 设置TMediaPlayer的AutoOpen属性为真,设置DeviceType属性为dtCDAudio,除此之外我们还可以关闭EnabledButtons属性的btEject选项,因为我们将使用代码来完成这个功能。  第四步 在某些应用程序中,我还要使用到数据CD,所以我也要设置Visible属性为假,让我的按钮做开关仓门的动作。  第五步 就是在按钮的Onclick 事件中添加下面的代码:procedure TForm1.Button2Click(Sender: TObject);
    begin
    with MediaPlayer1 do
    if (MediaPlayer1.Mode = mpOpen) then
    mciSendCommand(MediaPlayer1.DeviceID, MCI_SET, MCI_SET_DOOR_CLOSED, 0)
    else
    mciSendCommand(MediaPlayer1.DeviceID, MCI_SET, MCI_SET_DOOR_OPEN, 0);
    end;
       注意,我们使用了mciSendCommand函数,在Windows中,每个东西都是被消息控制,在设备控制方面,mciSnedCommand与windows的WndProc非常相似,都象是一个消息分发器,提供给设备了消息类型、消息标志、消息参数以及你所使用的方法。如果您想了解更详细的信息的话,请您参阅帮助文件。
      

  2.   

    虚拟光驱的 door 是不可以用 mci控制的,我试过 n次了。到 tonyfeng21.51.net 下个 Cd-Rom超级软件开关 玩玩 
      

  3.   

    其实问题是很奇怪的,当虚拟光驱门开的时候去打开或虚拟光驱门关闭的时候去关闭则一切正常,当虚拟光驱门关闭的时候去打开或虚拟光驱门打开的时候关闭则只有openmci设备的时候是正常的,其它的关闭mci和对mci操作则说mmsystem274相应的mci设备不支持该指令。
    --
    qywjg(梦想一生)的方法只对第一个光驱有效。
    ——
    需要该测试程序的完全源代码(d6)的话可以发Email到[email protected]
    ——
    by the way以上代码是否可以打开/关闭CD-r?
      

  4.   

    如果不可以用mci控制,而资源管理器又是如何实现对光驱(包括虚拟和无虚拟的)的操作的呢?有谁会debug的希望帮忙看看。
      

  5.   

    如果不可以用mci控制,那是否还有其它渠道呢?答案是有的,只是暂时大家都还不知道。
      

  6.   

    用sendmessagestring 只能控制最后一个盘的光区。