【问题标题】:Writing namespace extensions with Windows 7 integration使用 Windows 7 集成编写命名空间扩展
【发布时间】:2011-12-08 21:39:05
【问题描述】:

我是外壳扩展主题的新手,我正在寻找有关命名空间扩展的资源。我想编写一个支持 SFTP 的命名空间扩展,并在资源管理器中像 FTP 一样浏览所有选项。

我从 codeproject 中阅读了 zengxi 的示例12,但它们编译不正确并且似乎很旧。我认为也有很多变化,比如地址栏中的文件夹选择。

有人可以提供一些正确方向的资源或一些工作示例吗?

更新: 重要的是源是免费的。这是一个非盈利项目。

目前我在 MSDN 上找到了一个名为 Explorer Data Provider Sample 的好资源。这是最新的,并提供了一些别名 Explorer Data ProviderShell Data Source。还缺少拖放支持和支持协议链接的粘合剂。

为了将来的使用,最好找到一种方法将文件扩展名与 shell data source 相关联,例如 zip 文件。

【问题讨论】:

    标签: c++ windows winapi shell-extensions


    【解决方案1】:

    这是创建命名空间以映射 Flickr 上的真实文件的完整示例。 但是,只有源代码可用。没有教程。 希望能帮助到你.... http://www.viksoe.dk/code/flickrdrive.htm

    【讨论】:

    • 虽然理论上可以回答这个问题,it would be preferable 在这里包含答案的基本部分,并提供链接以供参考。
    【解决方案2】:

    对于拖放,this series of articles 是一个很好的起点。在我了解文件必须具有可以复制,可以移动等标志之后,我几乎有了解决方案。神奇的是在GetAttributesOf 中添加一行:

    *rgfInOut |= SFGAO_CANCOPY|SFGAO_CANMOVE;
    

    我还必须像这样在GetUIObjectOf 中发布IDataObject

    if(riid == IID_IDataObject) {
        PWSTR pszName;
        hr = _GetName(apidl[0], &pszName);
        hr = SHCreateDataObject(m_pidl, cidl, apidl,
                                new CFileDataObject(pszName), riid, ppv);
    } else if(riid == IID_IDropTarget) {
        // TODO publish
        return E_NOINTERFACE;
    }
    

    就是这样。

    顺便问一下,在这里分配CFileDataObject 的最佳做法是什么?

    【讨论】:

      【解决方案3】:

      看看EZNamespaceExtensionsMFC 库,它使开发命名空间扩展变得非常容易。查看它的 FileBrowser 和 RegBrowser 示例,您可以使用它们作为起点。

      免责声明:我为 EZNamespaceExtensionsMFC 的开发商 LogicNP Software 工作

      【讨论】:

      • 我看到了你们的产品。它看起来与我正在寻找的完全一样,但我无法购买许可证。这是目前一个非营利项目的想法,我也想了解命名空间扩展是如何工作的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-18
      相关资源
      最近更新 更多