Articles of shell extensions

图标覆盖处理程序的命名空间扩展

我正在开发命名空间扩展,它提供了服务器上的文件的虚拟视图。 在这个视图中,我需要使用叠加图标提供不同的状态(使用中,离线,不同步等)。 我通过实现覆盖处理程序的文章阅读,并认为我会尝试在我们的覆盖处理程序之一,实现IShellIconOverlayIdentifier接口处理此。 我看到IShellIconOverlayIdentifier :: IsMemberOf()和其他函数只有当我访问正常文件系统上的文件,即c:\,d:\等时才被调用。当我浏览命名空间扩展时,根本不会调用这些调用。 这是为什么? 如何在命名空间扩展中为对象实现覆盖? 问候,Madhu

在Win 7和8.1中debuggingshell扩展

我真的很感谢帮助。 我花了几个小时试图解决它。 我用VCPP6编写了一个小扩展(是的,我知道,不需要告诉我)在XP下使用IExtractImage在资源pipe理器中显示特定DOS文件的内容作为缩略图。 debuggingcertificate很简单 – 我closures浏览器,然后按F5键。 点击所需types的文件导致缩略图。 断点全部激活。 升级到VS2012(VS2013 Express也一样),使用IThumbnailProvider,同样的顺序也不起作用。 该程序本身的作品。 我可以在7和8.1中显示缩略图。 我不能做的是通过资源pipe理器进行debugging。 我可以使用来自SDK(ThumbnailProvider)的示例进行debugging,但不能使用Explorer。 项目设置是: Debugging->Command: C:\Windows\explorer.exe Debugging->Command Arguments: /e,/select,F:\NewWork\NSD-24kW\pcb\15300003.pcb Debugging->Working Directory: $(ProjectDir) (I've tried $(OutDir) too) Debugging->Attach: No (I've tried 'yes' too) Debugging->Debugger Type: Native Only Debugging->Environment: (not set) Debugging->Merge Environment: Yes search每个变体,我可以梦想debuggingshell扩展,并尝试每一个可能的变化,我可以find的指导,但它仍然没有看到的断点。

shell扩展不能在Windows-Explorer中工作,但在其他程序中工作?

我使用ATL“由书”做了shell扩展(实现IContextMenu , IShellExtInit , IExtractIcon和IPersistFile )。 有趣的是,在“Total Commander”和“Free Commander”等文件pipe理器中,所有的function都很好,但在Windows资源pipe理器中完全失败: 当我在TC(“Total Commander”)中右键点击我注册的文件(例如*.000 )时,扩展名工作:我在我的日志和上下文菜单中看到它:带有图标的条目出现。 但是如果我使用Win-Explorer,没有任何反应! 没有日志条目出现 ,在上下文菜单没有证据 – 什么都没有! 即使一台完整的电脑重新启动也没有帮助 我当然注册了ShellEx\MyX\ContextMenuHandlers和ShellEx\IconHandler键,以及资源pipe理器的…\Shell Extensions\Approved\ ,他们都指向我的CLSID 。 我使用Windows 7。 我在这里错过什么?

在Windows资源pipe理器中显示自定义标题或列

我的应用程序添加一些自定义元数据文件 我想要像这样在Windows资源pipe理器中显示它: 或这个: 有没有办法在.NET中做到这一点?

为文件夹注册缩略图处理程序,而不是特定的文件types

我需要为给定文件夹下的所有文件编写缩略图处理程序。 这个文件夹是一个虚拟文件系统(使用callback文件系统 )的挂载点,并且这些文件实际上并不存在于本地机器上(它们存储在云中),所以如果我让默认的缩略图处理程序执行它工作,它会尝试从服务器上下载整个文件…这显然不是我想要的。 但是现在我只是意识到,一个缩略图处理程序必须注册每个文件types : 缩略图处理程序的注册基于标准文件关联。 (来自文档 ) 我不想为每个文件types注册它,因为我不想更改不在我的虚拟文件夹中的文件的行为。 有没有办法让我的处理程序被称为我的虚拟文件夹中的所有文件,只有他们?

如何在命名空间扩展中添加(启用)标准的“发送到”上下文菜单选项

我有一个命名空间扩展,它提供了一个服务器中的文件/文件夹的虚拟视图。 在IContextMenu::QueryContextMenu()我已经添加了一些自定义菜单项。 我还在IShellFolder::GetAttributesOf()设置了几个SGAOF标志,以获得上下文菜单中的重命名,删除和属性。 有什么办法可以让我的名字空间扩展项目的上下文菜单中的“ 发送到 ”选项? 一旦启用这些命令,我​​该如何处理这些命令? 请指教。 这是Denis Anisimovbuild议的那个代码 const CLSID SendToCLSID = { 0x7BA4C740, 0x9E81, 0x11CF, { 0x99, 0xD3, 0x00, 0xAA, 0x00, 0x4A, 0xE8, 0x37 } }; HRESULT CMyNSEContextMenu::Initialize(PCIDLIST_ABSOLUTE pidlFolder , IDataObject *pDataObj, HKEY hkeyProgID ) { OutputDebugString(L"CMyNSEContextMenu::Initialize\n"); //Other initialization code … … if (_pdtobj) { _pdtobj->Release(); _pdtobj = NULL; } _mpidlFolder = […]