每一个文件,文件夹都有一个对应的 SHITEMID structure: typedef struct _SHITEMID { 
    USHORT cb; 
    BYTE   abID[1]; 
} SHITEMID, * LPSHITEMID; 更常用的是ITEMIDLIST
typedef struct _ITEMIDLIST {
    SHITEMID mkid;
} ITEMIDLIST, * LPITEMIDLIST; 
typedef const ITEMIDLIST * LPCITEMIDLIST; For the shell API, namespace objects are usually identified by a pointer to their ITEMIDLIST structure, or PIDL.右键菜单的获得就是通过 pidl的。所以此时你已经得到文件的pidl了。
再调用以下shell API.
BOOL SHGetPathFromIDList(
    LPCITEMIDLIST pidl,
    LPSTR pszPath
);
pszPath就是完整路径名。
更详细可参见MSDN中的 Windows Shell 部分

解决方案 »

  1.   

    其实用_flower的方法就可以了,不过看点msdn倒也不差
      

  2.   

    其实用_flower的方法就可以了,不过看点msdn倒也不差
      

  3.   

    右键菜单中的winzip程序 --> 我们先定义这个右键菜单叫菜单A菜单A中,winzip所在的菜单区上部有一个菜单分隔条,在这之上的菜单区我们叫菜单区A, winzip所在的菜单区叫菜单区Bshell扩展可以在这两个菜单区扩展1.explorer会通过命令行参数的方式传给你 (菜单区A)
    2.另外一种shell扩展的方法就是 ozx() 说的那样, winzip就是用这种方式(菜单区B)所以还是菜单区A的扩展比较容易:)