一.背景介绍

最近公司一个老项目需要添加导出数据到光盘的功能.开始对这功能添加有点抵触的.光盘?都啥年代了.

光盘一种即将淘汰的存储媒介.就像当年的随身听,Mp3,Mp4一样,即将退出历史舞台.领导让加,发牢骚归发牢骚,活还是得干哈.

从网上找了一些资料,都是特别古老的文档了.很多方法用起来并不是特别的方便.

1.CodePlex Archive https://archive.codeplex.com/?p=csimapi2samples 其中的例子功能不全,参数都使用dynamic类型,刚开始不了解那些基础概念时,理解起来比较难.可以参考学习.

2.博客:https://blog.csdn.net/huanghunjiuba/article/details/12967463 中的例子BurnCdDemo.

里面的BurnCdDemo对ImApi2做了封装.其实例子里面的封装做的挺不错的.注释也特别全.

在做测试的时候发现刻录功能在本机运行的非常好.在公司的测试机上却获取不到光盘大小,取到的大小是负数.对着Demo的源代码检查了半天,没找到原因.╮( ̄▽ ̄")╭,脑袋好大的.后来找到原因了,在下面的过程中会描述下.

C#光盘刻录

PS:个人不喜欢啥都做抽象.抽象,意味着要多写代码,查找问题也不方便.抽象,依赖注入,控制反转是个好东西,就是要多写许多代码.

个人觉得,很多技术还是要看实际项目情况而使用,没有必要去为了追求使用而滥用.看起来高大上,实际多写了代码维护也不方便.

So,自己搞个简单点的.因为就那么几个功能:获取光驱设备列表,获取光盘信息,添加媒体文件,刻录,进度通知.

二.工欲善其事必先利其器

 因工作电脑没有光驱,测试非常不方便.那我们就安装一个虚拟光驱.

推荐一个比较好用的虚拟光驱软件PhantomBurner,带注册码.下载地址:https://download.csdn.net/download/zjhaag/10909339

安装过程就不说了.选下安装路径,一路Next.安装完成后提示重启.其实不重启也可以用.

C#光盘刻录

安装完成后界面如下.在About中输入注册码激活.点击Create,选择Dvd+RW创建Virtual Disc Image.在资源管理器中就可以看到我们创建的虚拟光驱了.

C#光盘刻录

 三.开工

1.设备列表获取

(1)首先添加一个RecorderHelper.在RecorderHelper类中添加一个静态方法GetRecorderList用于获取光驱设备列表.

 1         /// <summary>
 2         /// 获取光驱设备列表
 3         /// </summary>
 4         /// <returns></returns>
 5         public static List<Recorder> GetRecorderList()
 6         {
 7             List<Recorder> recordList = new List<Recorder>();
 8 
 9             // Create a DiscMaster2 object to connect to optical drives.
10             MsftDiscMaster2 discMaster = new MsftDiscMaster2();
11             for (int i = 0; i < discMaster.Count; i++)
12             {
13                 if (discMaster[i] != null)
14                 {
15                     Recorder recorder = new Recorder(discMaster[i]);
16                     recordList.Add(recorder);
17                 }
18             }
19             return recordList;
20         }
View Code

相关文章:

  • 2021-05-26
  • 2022-12-23
  • 2021-12-30
  • 2021-12-30
  • 2021-11-05
  • 2022-12-23
猜你喜欢
  • 2022-02-24
  • 2021-12-09
  • 2021-07-18
  • 2021-10-17
  • 2021-09-20
  • 2021-07-27
相关资源
相似解决方案