问题标签 [sharpshell]
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.
c# - 如何开发一个shell ext。在资源管理器窗口中添加一个新按钮?使用 SharpShell
设想
我目前的操作系统是Windows 8.1 x64,并计划在不久的将来升级到Windows 10 x64。
我经常需要在资源管理器中切换以显示隐藏文件。
为了解决这个问题,我通过注册表添加了一个简单的上下文菜单项,然后当我右键单击文件夹的背景时,我的项目可以切换资源管理器的隐藏文件可见性。
问题
现在我想让这个功能更易于访问,以避免需要额外的点击来打开上下文菜单。我想将该功能集成为 shell 扩展,以便在每个资源管理器窗口右下角的默认按钮附近添加一个按钮:
问题
在C#或者最好是VB.Net中,最好使用SharpShell库,如何创建一个简单的 shell 扩展,在其中添加一个带有图标的按钮?
请注意,单击按钮时,我需要某种参考来识别单击按钮的当前窗口。
研究
我已经阅读了下面这个网址中针对初学者的所有官方文章,但是我没有找到任何关于在资源管理器中集成“插件”的文章(仅关于信息提示)。
我知道一些特定应用程序的存在,例如QTTabBar,它通过 shell 扩展在资源管理器中添加功能,例如菜单和按钮,它在这里有一个C#源代码,我会分析它,但它是一个非常巨大的 VS 解决方案,我的主要语言是VB.Net,我很不清楚作者在源代码中做了什么来在资源管理器中添加“插件”。
编辑
其资源管理器集成的AWM(实际窗口管理器)示例:
QTTabBar的资源管理器集成:
c# - .NET 使用 Sharpshell 和 FileSystemWatcher 创建图标覆盖(与 Dropbox 和 google drive 相同的行为)
我想在我的同步应用程序中创建图标覆盖(我想要与 Dropbox 和谷歌驱动器相同的行为);我已经使用 FileSystemWatcher 观看了本地更改,但我无法根据文件状态添加图标覆盖;我阅读了这篇文章,但找不到与我的场景相关的任何内容:http: //www.codeproject.com/Articles/545781/NET-Shell-Extensions-Shell-Icon-Overlay-Handlers 我想根据以下内容更改图标文件状态
c# - 如何将注册表中的 Sharpshell 图标覆盖处理程序名称更改为在名称前包含空格?
我使用sharpshell作为这个示例创建了图标覆盖处理程序:- http://www.codeproject.com/Articles/545781/NET-Shell-Extensions-Shell-Icon-Overlay-Handlers
我的 Sharpshell 处理程序是
我的问题是我想更改处理程序名称以在名称前包含空格,因此,我的处理程序将优先于 Dropbox 和 Google Drive。
c# - .NET 如何从 Sharpshell COM 扩展与 Windows 窗体应用程序通信?
我有一个 Windows 窗体应用程序(同步应用程序,如 DropBox 和 Google Drive)以及我使用 SharpShell 创建的 COM 组件(Shell 扩展),它向 Windows 文件系统添加了功能。我的问题是 COM 如何与 Windows 窗体应用程序通信。例如
当我在我的 Windows 窗体应用程序中创建一个单例时,COM 扩展看不到这个 Singleton(null),因为我认为它是一个不同的过程。我的问题是我想要 COM 进程(C# 代码)如何与 Windows 窗体应用程序(也是 c# 代码)通信的最佳实践,或者我希望两个应用程序都能看到我的单例。
c# - SharpShell 服务器 .dll 未签名
我需要开发一个引用其他一些自定义程序集的 Shell 上下文菜单扩展...我不想为这些自定义程序集分配一个强名称键!
我遵循的指南使用 SharpShell 项目,并说明了如何签署(但没有解释为什么)程序集......这是我的问题:如果我签署我的最终 .dll,那么我在项目构建期间会遇到很多错误阶段,因为我的项目引用的某些程序集没有强命名(“引用的程序集没有强名称”)。
一般来说,在谷歌上搜索 C# Shell Extension 实现,我发现所有最好的教程都在最终程序集上签名......它是强制性的吗?
不签署程序集 ServerManager.exe 将返回此错误:“ The file 'XYZ.dll' is not a SharpShell Server
”。
c# - 通过右键单击桌面或目录背景创建一个 Shell ContextMenu
名为SharpShell的 .NET Shell 扩展框架非常棒;我开发了一个右键单击文件 Shell ContextMenu “非常容易”,可以同时选择文件和目录。
现在我想通过右键单击空白空间(即在桌面上或我在文件夹内的白点上)来开发一个 Shell ContextMenu。仍然可以使用 SharpShell 吗?还是我需要转向不同的解决方案?...在第二种情况下...您有什么建议?
谢谢
windows - PropertySheet ListView 在 Windows 10 上的行为不同
我使用 SharpShell 创建了一个 PropertySheet。PropertySheet 使用 ListView,其视图设置为 Details 并启用 Groups 以显示一些信息。
PropertySheet 在 Windows 7 中的工作方式与预期完全一样,但是我现在已移至 Windows 10 (x64),尽管可以看到 PropertySheet 并且它包含的信息是正确的,但 ListView 行为不端。它根本不显示组,标题使用默认的“块”样式而不是像往常一样的“Aero”样式,最能说明问题的是页面没有重绘,即我必须单击它们的条目才能被画下来。
我已经在一个简单的 winforms 应用程序中使用完全相同的设置测试了 ListView,它的行为正确。
我已经使用 Spy++ 来比较现有的(Windows 的一部分)详细信息 PropertyPage(它也使用我想要的相同配置中的 ListView)。我发现设置标志的一些细微差别:
我创建了一个非常简单的 PropertySheet,以排除由原始 PropertySheet 的功能引起的任何问题。不幸的是,我得到了相同的结果。请参见下文(单击以强制重绘后,它应该类似于 Windows PropertySheet)。
我一直无法在网上找到任何提及此问题或可能导致此问题的 Windows 10 中的设置。
如果有人能够提供帮助,我将不胜感激。谢谢