问题标签 [shell-extensions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1171 浏览

windows - 将 Windows shell 扩展限制为文件夹/驱动器

我正在开发一个 shell 扩展,它应该显示存储在虚拟驱动器上的文件(主要是 .jpgs)的扩展属性(将其视为外部硬盘驱动器)。

是否可以以仅启动特定文件夹/驱动器(在我的情况下为外部硬盘驱动器)的文件并将其他文件夹中 jpgs 的处理留给 Windows 默认 shell 扩展的方式注册 shell 扩展?

问候,

塞巴斯蒂安

0 投票
2 回答
1412 浏览

c# - 在 COM DLL 和 C# 之间进行通信

前几天我问了一个关于覆盖图标的问题。在帮助下,我想出了如何让它发挥作用。

以下是图标覆盖的工作原理(据我所知):在外壳绘制图标之前,它会联系系统中的所有图标覆盖处理程序以确定它是否应该在该特定图标上绘制覆盖。

我的设置:
我有一个注册的外壳扩展(图标覆盖处理程序),我想用它来显示图标覆盖。此外,我有一个 .NET 应用程序 (C#),它将使用我想要显示覆盖的所有文件和文件夹的名称等写入数据库(最有可能是 SQLite)。

我的问题是:
如何让 Shell 扩展(我认为它基本上是一个 COM DLL)回调到我的 .NET 应用程序中?或者这是否有点矫枉过正,我应该直接从数据库中读取 Shell Extension 吗?

可能的解决方案?

  1. 让外壳扩展(图标覆盖处理程序)读取数据库并确定是否显示覆盖。
  2. 让外壳扩展调用回 .NET 应用程序以确定是否显示覆盖。

我希望这是有道理的,如果没有,我会尝试详细说明。

0 投票
1 回答
1710 浏览

windows - 覆盖外壳扩展的拖放

我正在使用 C++ 编写 ShellExtension 代码。我正在创建一个虚拟驱动器。它代表网络中某处的存储库。我现在想要的是为此驱动器启用拖放功能。我想让用户将文件拖到该虚拟驱动器,然后我必须能够抓取该事件,以便我可以执行我的自定义操作。到目前为止,我无法找到任何此类事件或接口。我尝试使用IDragAndDrop接口,但它的 rgs 文件没有正确注册。有什么出路吗?

0 投票
5 回答
5512 浏览

c++ - 在 Windows 7 中调试 shell 扩展

我正在尝试使用 Visual C++ 2008 在 Windows 7 中调试 shell 扩展(IContextMenu)。我在注册表中设置了 DesktopProcess=1 并将主机应用程序设置为 explorer.exe。但是当我启动调试器时,它会启动 explorer.exe,然后从进程中分离出来。不调用 shell 扩展的 DllMain。

在调试器中启动的具有完全相同设置的相同代码在 Windows XP + Visual C++ 2008 中没有任何问题。

任何想法如何在 Win7 中调试 shell 扩展?

0 投票
2 回答
1976 浏览

c# - 编写类似于程序集缓存查看器的 Windows Shell 扩展

我想编写一个 shell 扩展来完全自定义特定文件夹的显示,例如 Assembly Cache Viewer(浏览到 c:\windows\assembly,你会明白我的意思)。哪些 COM 接口负责提供这些钩子?我的“查看器”将用 C# 编写...

谢谢!

0 投票
1 回答
537 浏览

c# - 命名空间扩展..galaxy 文件系统工具包...gmail shell 驱动器之类的实用程序

我一直在寻找一些命名空间扩展来使用 c# (.net) 进行扩展,但除了 Galaxy Filesystem takelkit 之外没有在网上找到太多帮助。它们是基于 vc++ 的,但带有 c# 和 java 包装类......这对我有很大帮助,我做到了。

我现在已经扩展了足够的内容并安装了安装程序。它安装成功但不知道为什么,当我打开它时,系统卡住了...... :(我认为我的修改版本可能有问题所以我尝试运行 Galaxy 文件系统工具包的作者原始版本,它以同样的方式响应和我一样 :D :(

现在感觉有点无助,因为即使作者出于某种原因也没有回应我关于我的查询的查询......

任何帮助将非常感激....

仅供参考:我需要有 Gmail 驱动器之类的东西......

0 投票
1 回答
365 浏览

windows - 如何从 Windows 资源管理器继承(使用任何编程语言,借助任何工具)

如何从 Windows 资源管理器(桌面,我们借助它探索我们的 Mu 计算机等目录的东西)继承(在任何编程语言中)?

  • 定制它

  • 添加程序提取器(添加到 Windows Explorer Mac 教师或排序算法或添加按钮或任何东西)


我需要什么:

  1. 例子
  2. 开源库和开源示例
  3. 文档(对于前 MSDN 或类似的东西)

PS:它应该适用于\与 Windows Vista, 7

0 投票
1 回答
1927 浏览

shell-extensions - 如何在 FileOpen 对话框中禁用 Shell 扩展

我说的是 Windows shell 扩展。

我有一个 shell 扩展,它可以显示我的自定义文件类型的特定属性,比如 *.filetype。当然,它会导致我的 shell 扩展 dll 被加载到 explorer.exe 进程中。但是现在如果我在任何应用程序中触发 FileOpen 对话框并检查该对话框中的文件属性(例如记事本),那么这些 shell 扩展 dll 将被加载到 notepad.exe 进程中,这是我想要避免的情况。

那么是否可以在 FileOpen 对话框中禁用特定的 shell 扩展?

谢谢。

0 投票
2 回答
1476 浏览

windows-7 - Windows 7 中的桌面命名空间扩展:无法拖放

我有一个使用桌面命名空间扩展的程序。在 Windows 2000、Windows XP 和 Windows Vista 中,用户可以将图标拖到桌面上的图标上,然后启动程序。但是,在 Windows 7(家庭版和旗舰版)中,所发生的只是重新排列了图标顺序。我尝试使用 Sysinternals dbgview.exe。它正确地注意到了来自 handler.exe 的许多事件,但没有通过将图标拖到命名空间图标上来触发任何事件,这意味着甚至根本没有调用 drophandler。

由于它仍然可以正常工作,因此 Windows 7 一定有一些以前版本的操作系统没有要求的东西。

命名空间扩展是通过将相关键填充到注册表中来安装的,我想让安装程序以这种方式工作:

0 投票
1 回答
342 浏览

c++ - 加载 Windows 资源管理器时加载 DLL 的可靠方法是什么?

我正在研究为 Windows 资源管理器开发一个附加组件,它将为其中的 WebDAV 添加一些增强功能,为此我正在寻找一种好的、可靠的方法来强制在 XP / 中使用 Windows 资源管理器加载 DLL Vista/Win7 32 位和 64 位操作系统。

我似乎记得 Windows 资源管理器会以与 IE 中相同的方式加载 BHO,但我对此的初步测试在 Vista 64 上是否定的。很有可能我只是在那里做错了什么,并会调查那更多。

我还查看了 Shell Extensions,但据我所知,只有在采取某些操作时才会加载这些扩展。我也可能是错的。

所以,我很乐意提供一些建议,以提供实现这一目标的好方法:)

我只需要在加载 Windows 资源管理器时加载 DLL。

更新:在我发布这个问题之后,我发现我的 BHO 注册在注册表中设置了 NoExplorer 选项,我想这可以解释为什么它不起作用。删除它之后,它看起来会起作用。不过,如果还有其他方法可以完成同样的事情,我仍然愿意学习。