帮助我开始制作文件 - >右键单击Vista中的上下文菜单

时间:2009-05-02 19:50:05

标签: .net windows filesystems contextmenu right-click

我是新手.Net 2.0和3.5开发人员。我想创建一个应用程序,在Vista中右键单击文件时创建上下文菜单。右键单击后 - 我想我可以弄清楚其余的,但我不知道访问Vista API的技术。

后续:

由于我一直在阅读人们回复的一些信息,我发现我在这里使用shell扩展过度。如果我只是调用我的应用程序并将文件名作为参数传递,我想我可以让这个项目更简单。当右键单击具有特定扩展名的文件时,这仍然需要我的应用程序出现在资源管理器的上下文菜单中。我该怎么做呢?

4 个答案:

答案 0 :(得分:1)

冒着听起来无益的风险,我建议不要使用.Net 2.0或3.5。正如Brian所说,你试图实现的是shell扩展。这些是作为Vista shell加载的库实现的。

虽然网上有几个教程可以提供有关在.Net 2.0中实现这些内容的说明,或者其中少数这些教程提到这是多么糟糕的想法。如果你让Vista shell加载.Net shell扩展,则会强制加载你的shell扩展所需的整个.Net CLR。更糟糕的是,您只能在一个进程中加载​​完整.Net CLR的一个版本。因此,如果你的shell扩展需要.Net 1.0 CLR并且Vista加载了它,它就无法加载你的shell扩展所需的2.0 CLR。​​

还有一些Stack Overflow articles已在讨论这个问题。

关于implementing a shell extension in unmanaged C++的一些信息(KBCafe PDF,找不到简单的HTML链接)

答案 1 :(得分:0)

您尝试编写的内容称为“shell扩展”。我从来没有写过一篇,所以我不能给你一个快速的例子,但现在你知道它所谓的你可以通过在Google上搜索教程来取得更多进展。

答案 2 :(得分:0)

我相当肯定您不允许在任何版本的Windows中使用托管代码为资源管理器编写shell扩展。所以如果你想写一个,你需要用“C ++”这样的“传统”语言来做。

答案 3 :(得分:0)

You need a Context Menu Shell Extension,现在要记住的一件事是你 not allowed to write them in .net (旧的新博客)。
您可以尝试编写进程外扩展(骨架是非托管的,通过IPC调用托管服务)但我没有看到有人这样做。