桌面右键弹出你添加的二级菜单。COM技术,ATL。
这几天一直在做壁纸。翻了一些资料,终于做出来了。
几个函数:
SHGetSpecialFolderPath用于获取特殊文件夹路径
SHGetPathFromIDList从id list获取路径
1.新建ATL工程,选支持MFC(因为要使用CString)和合并存根两个选项(因为不需要远程COM)。
2.右键工程,选添加类-ATL-ATL简单对象。取个名称。叫做SimpleShlExt。
3.下面就该添加SimpleShlExt.h和SimpleShlExt.cpp中的代码了
因为要用到这两个接口IShellExtInit和IContextMenu这两个接口,所以CSimpleShlExt要继承这两个接口,并实现之
class ATL_NO_VTABLE CSimpleShlExt :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CSimpleShlExt, &CLSID_SimpleShlExt>,
public IDispatchImpl<ISimpleShlExt, &IID_ISimpleShlExt, &LIBID_SimpleExtLib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
public IShellExtInit,//这俩是新添的。用于ShellExt的初始化
public IContextMenu//用于右键的上下文菜单
4.为CSimpleShlExt实现如下的方法// IShellExtInit