系统右键菜单添加自定义菜单项

基本环境

1.jpg
添加项Visual C++ -> ATL -> ATL项目
2.jpg
应用程序类型: 动态链接库dll
支持选项全不勾选, 包括新版的生命周期安全检查点击完成

3.jpg
4.jpg
在atl项目右击添加->类->ATL简单对象,简称为MyShellMenu 点击下一步
5.jpg
线程模型:单元 (Threading model: Apartment )
聚合: (Aggregation: No)
接口:自定义 (Interface: Custom )

打开MyShellMenu.h
添加头文件#include
删除 public IMyShellMenu
删除 COM_INTERFACE_ENTRY(IMyShellMenu)
完成以上操作如下图:
6.jpg

IShellExtInit

添加公有接口继承public IShellExtInit
添加接口查询线路COM_INTERFACE_ENTRY(IShellExtInit)
完成以上操作如下图:
7.jpg

在类里面声明和实现函数

public:
// 定义字符串缓冲区
TCHAR m_strBuffer;
// 实现函数
HRESULT Initialize(
  [in] PCIDLIST_ABSOLUTE pidlFolder,
  [in] IDataObject       *pdtobj,
  [in] HKEY              hkeyProgID
);

IContextMenu