荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Peter (小飞侠), 信区: Program
标  题: DelphiTips 030 - 打开和关闭CD盘
发信站: BBS 荔园晨风站 (Thu Jan 21 21:32:19 1999), 转信


打开和关闭CD盘
Opening and Closing a CD Tray


问题:怎样打开和关闭一个CD-ROM驱动器的CD盘呢?

可能很多人已经非常熟悉 TMediaPlayer 组件。 这个组件可以实现操作
多媒体的多个功能,但是,对于以下操作却是失败的:在CD-ROM中的CD
盘打开时,就没办法关闭它。 不幸的是,TMediaPlayer组件还没有任何
方法或属性来完成该操作。 所以我们要做的就是使用 Windows API;此
外也将使用 MMSystem.pas 文件。要注意的是:我们可以单独的调用
Windows API 函数,但是由于 TMediaPlayer 可以封装了一些我们不用
额外操心的功能,所以我们在这个例子中还是使用该组件。

请遵循以下步骤:

1、开启新的项目,并放置一个 TMediaPlayer 和一个 TButton 在新窗体上。

2、在窗体的 uses 声明中增加一个 "MMSystem" 声明。

3、设定 TMediaPlayer 的 AutoOpen 为 True, DeviceType 属性为
dtCDAudio。 你可能想使 EnabledButtons 属性的 btEject 选项无效,
因为我们将会在代码中实现这个功能。

4、有时候我在一些应用程序中仅操作数据CD(不是唱片),所以我将
Visible 属性设置为 False,而使用命令按钮来操纵开启和关闭CD盘。

5、最后,在按钮的 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 系统中,所有对象
都由消息控制的,对于设备控制器,mciSendCommand 非常类似于窗口的
WndProc函数,同样是消息的分发器。简单的提供设备、消息类型、消
息参数,你就能得尝所愿了。建议你参考帮助文件,以获取有关该函数
的更详尽的信息。


--
※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.1.3]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店