一.简介
虚拟光驱,对我们大家来说,都不会太陌生。因为种种原因,如,有些游戏,需要在光驱才能运行,我们为了保护光驱,或者为了加快游戏读取光盘的速度,或者因为有些电脑本来就没有安装光驱(网吧,学校的电脑往往就是这样的)。我们可以通过虚拟光驱来在达到我们的目的。金山虚拟光驱是应用的比较广泛的一种虚拟光驱软件。它安装操作简单,用来制作虚拟光盘也很方便。
但在使用它的过程中,我发现每次为了将虚拟光盘插入光驱中或者从虚拟光驱中弹出光盘,我们需要先运行金山虚拟光驱管理工具才能进行。虽然并不是很复杂,但是每次都要这样做也是感觉比较烦的,我们都是有动手能力的,为什么不自力更生,自己DIY一把呢?硬件DIY可能对很多人来说都不是很有条件,但是进行软件的DIY,对于我们有一定的编程能力的人来说却完全是可行的。特别的是,通过这样的DIY,我们可以从中学到许多东西。
1.功能预览
在进行DIY之前,我们先看一下最后的效果。当你在虚拟光驱的盘符上单击右键弹出它的上下文菜单,你会发现它会多出一项或者两项菜单,见下图:
单击新添的“插入虚拟光盘文件(I)…”这项菜单,将打开文件浏览对话框。你从中选择一个虚拟光盘文件(通常是*.ISO),则该虚拟光盘就立刻插入到该光盘中了。当该虚拟光驱中有光盘的时候,“弹出虚拟光盘文件”这个菜单项将出现在菜单里,很明显。当你选择该菜单指令,则方该虚拟光驱内的光盘将立刻弹出。
当你从浏览器内右击一个虚拟光盘文件(*.ISO)时,它的上下文菜单内将出现一个子菜单,见下图:
“插入虚拟光驱”这个子菜单将列出当前系统里所有的虚拟光驱盘符。功能也很明显,当你选择了其中的一个的时候,该虚拟光盘就插入到你选择的这个虚拟光驱内了。
这样是不是比用金山虚拟光驱自带的管理软件来得方便,至少它不用再启动一个软件来进行了。
2.工作原理
那么,它又是如何工作的呢?在WINDOWS系统中,浏览器(Explorer)为第三方的应用软件提供了一种插件机制:Shell扩展。Shell扩展是以COM的形式工作的,它有很多种。我们这里用的就是其中的一种:上下文菜单扩展。
3.相关知识
下面简单介绍一下编写本文程序需要具备的一些知识,其中有些上面已经提到了,比如Shell扩展,COM技术。另本文使用VC++6.0编写的并且用到了ATL库。对这些读者都需要有一些了解,这将有助于理解本文的程序。当然即使你不了解,也没关系,你仍然可以通过阅读本文来成功DIY一回。