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

跟进:

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

有帮助吗?

解决方案

考虑到听起来毫无帮助的风险,我建议不要在 .Net 2.0 或 3.5 中这样做。正如布莱恩所说,你想要实现的是一个 shell 扩展。它们被实现为 Vista shell 加载的库。

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

另外还有一些 堆栈溢出文章 已经在讨论这个了。

一些信息 在非托管 C++ 中实现 shell 扩展 (KBCafe PDF,找不到简单的html链接)

其他提示

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

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

您需要上下文菜单外壳扩展程序 ,现在要记住的一件事是你 不允许在.net 中编写它们(旧的新东西博客)。
您可以尝试编写进程外扩展(骨架是非托管的,通过IPC调用托管服务),但我没有看到有人这样做。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top