c# - 如何创建与资源管理器具有相同选项的上下文菜单

标签 c# .net windows

如果这个问题已经得到解答,我深表歉意。我找了又找,找不到我想要的东西,这让我感到非常惊讶。请随时给我一个带有链接的“这已经被问过”...... :(

我正处于用 C# 创建程序的早期阶段。主窗口将包含与我的应用程序相关的文件列表。我目前将它们放在 ListView 中,但如有必要,我可以切换小部件类型。我想要的是让用户可以右键单击一个或多个文件名,这将调出与资源管理器中相同的上下文菜单。例如“打开”、“编辑”、“打印”等等。

显然我可以手动将内容放入上下文菜单中,但我希望它具有与资源管理器中相同的选择。将有 Word 文档和文本文件以及各种其他零碎的东西。我不知道标准 Windows 上下文菜单中的操作列表是如何填充的,尤其是考虑到该列表会根据所选文件类型以及是否选择多个文件而变化。

如果需要,我可以提供代码,尽管我还没有任何有趣的东西。

所以我的问题是 - 如何获取在资源管理器中右键单击一个文件或一组文件时获得的操作列表?是否有我可以调用的 Windows API?或者我是否汇总了我在注册表中读取的选项?如果是这样,我读什么?或者什么?

作为奖励,我希望能够只在我自己的应用程序中向菜单添加一些我自己的命令。大多数情况下,我能找到的是如何为上下文菜单编写扩展,以便我可以添加一个在单击特定文件类型时始终出现的操作。那不是我想要的。不过,这是一个额外的好处,如果这不起作用或需要英雄编码,我总是可以添加按钮或下拉菜单或其他东西。

最佳答案

我找到了这篇描述 C++ 过程的文章,但我认为您将能够转换它。 Using the shell context menu

编辑: 这是另一个指向带有现成代码 (C#) 的项目的链接:

Explorer shell context menu

关于c# - 如何创建与资源管理器具有相同选项的上下文菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17113278/

相关文章:

c# - DataGridView 替换值

c# - OxyPlot 自动缩放

.net - 在 Windows 服务启动时等待网络配置完成

c# - Try-Catch 未知行为

windows - 从 MSYS2 使用 Rust 在 Windows 上安装 Cargo

c++ - 检测应用挂起

c# - 用于电子邮件发送的波兰字符 MIME 格式的问题

c# - XNA 的 Vector2 类,属性在尝试更改其值时返回错误

c# - DataGrid 在自动生成列时在代码后面设置列的大小

c# - 将文本文件的编码从 ANSI 更改为 UTF8,而不影响 C# 中文件的任何字符!