右键菜单,指用户在对Windows Shell Object右键单击时,弹出的上下文菜单(Context Menu)。
如上图所示的对右键菜单进行扩展,属于Windows Shell Extension编程的一部分。
注:一般扩展程序的信息会注册到注册表某个路径的ShellExt下。
本文将介绍利用COM接口对Windows右键菜单进行扩展,笔者将分四个步骤对整个项目建立过程进行引导和解释,并会在文章末尾将给出项目代码(C++)链接。
声明:本文在某些API的解释中,加入了笔者的个人理解,可能并不完全或存在理解错误,故在重要WinAPI的解释后面会加入MSDN的连接,方便读者直接查阅官方文档。一切解释请以官方文档为准!
可能需要用到但并不是阅读本文必须的前置知识:COM、ATL、注册表。
一. 新建一个ATL项目
Visual Studio——新建项目——ATL——使用默认配置(一直按下一步即可)。
注:默认配置中程序类型为动态链接库dll。
注:如果生成的项目中多了一个以PS为后缀的子项目,可以选择将之移除。
二. 为项目添加一个简单的ATL对象,继承并实现相应的IContextMenu、IShellExtInit的接口方法。
右键项目——添加(Add)——类(Class)——弹出添加引导
引导中双击选择ATL简单对象(ATL Simple Object),并根据需要填写类名字以及对应的信息,(某些信息VS将自动帮填写,但ProgID建议手动填写一下),点击完成生成一个ATL 简单对象,会发现项目中生成了刚才填写类名字的.h、.cpp、.r