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

4

如果已经有人回答了这个问题,请原谅我。我已经找了很久,但是没有找到我想要的内容,这让我感到非常惊讶。如果您能提供一个“这个问题已经被问过”的链接,那就太好了… :(

我正在使用C#创建一个程序的早期阶段。主窗口将显示与我的应用程序相关的文件列表。我目前将它们放在一个列表视图中,尽管如果需要,我可以切换小部件类型。我希望用户能够右键单击一个或多个文件名,这将会弹出与在资源管理器中相同的上下文菜单。例如,“打开”,“编辑”,“打印”等等。

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

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

因此,我的问题是 - 如何获取右键单击资源管理器中的一个或一组文件时获得的操作列表?是否有可以调用的Windows API?还是我聚合在注册表中读取的选择?如果是这样,我应该读什么?或者怎么办?

作为奖励,我想能够将自己的一些命令添加到菜单中,但仅限于我的应用程序内。大多数我能找到的只是如何编写上下文菜单的扩展,以便在单击特定文件类型时始终显示一个操作。这不是我想要的。虽然这是一个额外的功能,如果这不起作用或需要英雄式的编码,我总是可以添加按钮或下拉菜单之类的东西。


查看注册表项HKCR:它包含文件类型扩展到类ID到CLSID到“动作”(HKCR \ CLSID \ xxxxx \ Verb)的映射... 有人可能会发布适当的API来读取所有内容。 - Alexei Levenkov
有所帮助。如果有API的话会更好,但我可以搜索注册表并建立动词列表。谢谢! - user2270472
当你弄清楚之后,一定要将解决方案作为你自己问题的答案发布在这里,以帮助下一个遇到相同问题的人。 - Scott Chamberlain
我一定会的,不过我希望有其他人能够回答... - user2270472
我想感谢@svic删除问题标题中的“C# -”部分。 我认为将其标记为特定于C#会更容易为他人提供帮助。 我现在明白,没有这些过多的信息可能更好。 - user2270472
显示剩余3条评论
1个回答

4

我需要一些时间来处理那个链接,但它看起来很有前途。谢谢! - user2270472
我需要一点时间来消化这个。但是看起来第二个链接正是我要找的。 - user2270472
让我消化这个需要 相当长的时间。 ;) - user2270472
我也看了一下。似乎有相当多的“本地”代码。但我认为这确实是你在寻找的东西。 - Romano Zumbé
你可能也想阅读http://www.codeproject.com/Articles/3551/C-does-Shell-Part-1。我正在努力理解代码。尽管如此,它看起来非常有前途。很可能这将是被接受的答案。谢谢! - user2270472
1
希望在我接受之前等待周末并没有违反协议。我需要一些时间来消化我的所学。但它表现得非常好。谢谢 @Romano Zumbé!! - user2270472

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接