写好外壳扩展程序后,必须将它们注册才能生效。
所有的外壳扩展都必须在Windows注册表的HKEY_CLASSES_ROOT/CLSID键之下进行注册。
在该键下面可以找到许多名字像{0000002F-0000-0000-C000-000000000046}的键,
这类键就是全局唯一类标识符。每一个外壳扩展都必须有一个全局唯一类标识符,
Windows正是通过此唯一类标识符来找到外壳扩展处理程序的。在类标识符之下的
InProcServer32子键下记录着外壳扩展动态链接库在系统中的位置。与某种文件类型
关联的外壳扩展注册在相应类型的shellex主键下。如果所处的Windows操作系统
为Windows NT,则外壳扩展还必须在注册表中的
HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/ShellExtensions/Approved主键下登记。
上面提到的在Windows Explore中在鼠标右键菜单中添加菜单项(我们成为上下文相关菜单)
的操作属于外壳扩展的第一类,即Context menu handlers向特定类型的文件对象增添
上下文相关菜单。要动态地在上下文相关菜单中增添菜单项,可以通过写Context Menu Handler
来实现。
编写Context Menu Handler必须实现IShellExtInit和IContextMenu两个接口。
除了IUnknown接口所定义的函数之外,Context Menu Handler还需要用到
QueryContextMenu、InvokeCommand和GetCommandString这三个非常重要的成员函数。
我的程序已经发出,请验收。