2010-12-12 29 views
1

我有一个C#WPF应用程序。它旨在用于任何和所有文件。现在,它通过命令行参数接受'输入',并拖放到其主窗口中的控件。不过,理想情况下,我希望人们可以右键单击任何文件/多个文件,并让他们只需点击“Awesomify this”即可。 (这不是真正的名字:P)推荐的混合.NET和文件上下文菜单的方式

我以前得到了与上下文菜单的一些经验多年,所以所有的一切,这是不是太电流。因此,我正在寻求实施此功能的最佳方式的建议。以下所有示例均基于我使用W7所看到的内容。

一般情况下,我的理解有两种基本方式:纯注册表和注册表+ COM对象。

前者有一定的优雅,因为我不想要任何特别的;但是,从文档中可以看出,这些菜单项总是与主文件操作集中在一起(打开,预览,打印)。不过,我希望我的物品在图腾柱上显得更低。如果我看我个人的ContextMenu一个随机文件,我想这是在“发现” 的UltraEdit的Malwarebytes反恶意软件坚持自己。坚持我的条目HKCR\*\shell\AwesomeTest得到我的项目,但不管我选什么Position,我得到两个不同的极端我不喜欢:Top把它放在默认项目上面,Bottom把它放在之上。我想要它在分享恢复以前的版本,其中大多数通用工具似乎找到一个家。

有些多个注册表挖似乎指出我想模仿使用的COM对象路由的应用程序。这会让我(我相信)回到本地代码。然后,这将带来我试图避免的所有32位和64位开发的地狱。

有什么我失踪?同样,除了MSDN page regarding context menu handlers之外,我已经浏览了一下,发现它很没用(因为它似乎没有深入探讨有关放置等的更精确的细节),有没有关于这个问题的好消息?

另一件事我已经无法弄清楚,只是还没有为我怎样才能正确地添加到我的.NET WPF应用程序的支持下降目标还,所以这些信息也将受到欢迎。

如果任何人有一个即时的答案,以及那将是不错,但我主要是想找到不采取对是死胡同的路径浪费好几天了正确的道路。似乎有很多。 :(

回答

1

IContextMenu :: QueryContextMenu()。外壳扩展是在C域++,C#中非常不愉快,.NET 4.0必需的。使用它is here的样本项目。

+0

感谢您的答复,但是这我正在寻找将我的WPF应用程序放在文件上下文菜单中的特定位置,而不是通过显示/访问/从我的WPF应用程序中获取文件。到目前为止,似乎是最好的选择是将32位和64位的上下文菜单处理程序dll扔进混合物中,以便在正确的位置显示该物品。 – Stigma 2010-12-12 20:38:49

+1

(心理记录:停止传递坏消息)。 – 2010-12-12 21:07:24