Ale*_*lec 6 .net c# c++ com shell
在过去的几天里,我一直在研究如何编写一个 shell 扩展,以便我可以为我的应用程序创建动态自定义上下文菜单条目和文件装饰,并且我对使用 .NET(托管代码)的相互矛盾的意见感到困惑创建外壳扩展。
一方面,有人说使用托管代码创建 shell 扩展是危险且不鼓励的(即使在 .NET 4.0 之后): 现在 .NET Framework 的第 4 版支持进程内并行运行时,现在可以在托管代码中编写 shell 扩展吗?
所以,好吧,我将使用 C++,但我能找到的 C++ shell 扩展的唯一示例只是为单个文件类型注册一个上下文菜单条目,这太简单了,无法满足我的需求。我希望能够根据选择的文件动态创建上下文菜单条目,如该问题的最佳答案中所述: WinRAR 上下文菜单和 Windows 的文件类型检测
您可能希望根据选择的是一个文件还是多个文件来显示不同的菜单项。由于可以在 IShellExtInit::Initialize 中确定所选文件的数量,因此这变得无关紧要。您还可以将菜单项基于文件本身。除了选择的文件数量外,您还应该知道相关文件名。这意味着您可以打开文件、检索信息并根据实际数据创建菜单项。或者,您可以检查文件的某些其他属性(例如,其创建日期、大小或只读状态),并将菜单项也基于该信息。
因此,在我搜索如何做到这一点时,我找到了这样的优秀代码示例:.NET Shell 扩展 - 将子菜单添加到 Shell 上下文菜单和动态加载用 .NET 编写的上下文菜单。然后我回到第 1 部分,试图弄清楚使用 .NET 来创建 shell 扩展是否真的可以。
所以,问题:
如果我按照上面链接的 .NET shell 扩展教程进行操作,我的 shell 扩展是否会很慢,只能在某些 Windows 操作系统上运行(不担心 vista,但如果它可以在所有 7、8 和 10 台机器上运行,那就太好了),还是危险?如果目标机器没有安装 .NET 框架怎么办?如果目标机器安装了较早版本的 .NET 框架怎么办?
| 归档时间: |
|
| 查看次数: |
1030 次 |
| 最近记录: |