内容摘要:本文详述了如何为金山虚拟光驱软件进行浏览器上下文菜单扩展.通过扩展,你可以直接通过鼠标右击虚拟光驱盘符来插入或者弹出虚拟光盘文件,也可以通过右击虚拟光盘文件(*.ISO)来将它直接插入某个虚拟光盘内。

“插入虚拟光驱”这个子菜单将列出当前系统里所有的虚拟光驱盘符。功能也很明显,当你选择了其中的一个的时候,该虚拟光盘就插入到你选择的这个虚拟光驱内了。
这样是不是比用金山虚拟光驱自带的管理软件来得方便,至少它不用再启动一个软件来进行了。
2.工作原理
那么,它又是如何工作的呢?在WINDOWS系统中,浏览器(Explorer)为第三方的应用软件提供了一种插件机制:Shell扩展。Shell扩展是以COM的形式工作的,它有很多种。我们这里用的就是其中的一种:上下文菜单扩展。
3.相关知识
下面简单介绍一下编写本文程序需要具备的一些知识,其中有些上面已经提到了,比如Shell扩展,COM技术。另本文使用VC++6.0编写的并且用到了ATL库。对这些读者都需要有一些了解,这将有助于理解本文的程序。当然即使你不了解,也没关系,你仍然可以通过阅读本文来成功DIY一回。
二.实现1.调试跟踪动态链接库kscdrush.dll
kscdrush.dll位于金山虚拟光驱安装目录下。经过观察和试验可知,它正是用来控制虚拟光驱的。这里我简要地说明一下是如何得到该DLL内的相关功能函数的原型和数据结构的。汇编级的调试跟踪DLL跟本文的内容无关,它涉及到其它的很多技术,如果详细描写的话,那将是一大篇文字。
查看kscdrush.dll的导出函数表,得到两个入口函数,但在虚拟光驱管理器的导入表内,只用到了其中的一个:kvdEntry,我们对这个函数的反汇编代码进行分析和调试得到,该函数原型如下:
typedef void (__stdcall* FUNC_ENTRY)(KVD_ENTRY** ppEntry);
责编:豆豆技术应用
正在加载评论...