网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
用IMAPI实现CD刻录和设备查找
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式

代码下载

http://download.microsoft.com/download/1/6/4/164c2a20-aeb0-460f-907d-985d83e86bd4/CQA0404.exe

        MFC没有提供CD刻录的类,但WindowsXp内置了写入CD的支持。如果只是复制文件和目录,可以用shell''s ICDBurn接口。如果要刻录音频或更近一步的实现对音频的控制,那么下面会介绍一个专用的API。

        ICDBurn有三个方法,HasRecordableDrive扫描系统内可写的CD驱动器,找到的话返回TRUE。GetRecorderDriveLetter返回可写驱动器的盘符。最后刻录指令通知Windows从“集结区”向可写CD拷贝数据。“集结区”是一个专用的文件夹,通常是"%userprofile%\Local Settings\Application Data\Microsoft\CD Burning", 但还是应该调用SHGetFolderPath和参数CSIDL_CDBURN_AREA获得准确的目录名。开发者会经常用到SHGetFolderPath,因为用户会经常手动或用PowerTools/TweakUI等工具改变刻录的目录。

        笔者写了一个很短的类CCDBurn来封装ICDBurn.这个结构用CLSID_CDBurn调用CoCreateInstance,读者可调试运行。

CCDBurn burner;

if (!burner.HasRecordableDrive()) {

   printf("Oops—No recordable drive!\n");

} else {

   CString dl =

       burner.GetRecorderDriveLetter();

   printf("Default Recorder drive letter =

       %s\n", (LPCTSTR)dl);

}



        驱动器盘符是在驱动器记录属性中启动CD记录功能的那个驱动器。只有一个驱动器可以设置这种属性。假定HasRecordableDrive 返回TRUE,也就是电脑至少有一个可记录的CD驱动器,你要做的就是把文件拷贝到集结区内,这就是刻录。

        由于笔者很严谨,我又加入了另一个步骤GetBurnFolderPath,调用SHGetSpecialFolderPath 得到一个CString形式的刻录文件目录:

  CString path = burner.GetBurnFolderPath();

       如果要写入音乐,或找到其他刻录驱动器,或者获得更详细的信息:如驱动器是否是可写的。对此,windows xp提供了IMAPI,它是Image Mastering API的缩写,不要和 MAPI——用于e-mail的Messaging API 混淆。IMAPI提供了COM接口可以寻找可刻录驱动器和写入数据或者指向你最近用过的光驱。

       由于与COM的冲突会引起较大的问题,笔者写了一个小的类库,IMAPITools,解决了大多数问题。为了说明怎么用这个类库笔者还写了一个程序CDINFO。CDINFO在控制台窗口中显示CD记录体的信息。

      只要掌握了IMAPI,CD刻录就不难。但IMAPI很庞大,在讲完基础后再简要的说一下这个问题。

      首先,CDINFO创建了一个对象显示驱动器盘符和刻录路径。接着,创建CDiscMaster 打开IMAPI session:

   CDiscMaster dm; // create IDiscMaster

  if (!dm.Open()) {

     printf("Oops: ");

     return;

CDiscMaster 封装了第一个主IMAPI 接口IDiscMaster。它调用CoCreateInstance创建 Microsoft MSDiscMasterObj 对象然后得到IDiscMaster 接口。IDiscMaster 例举出格式和记录器,选择活动记录器等。

    &nbs

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号