资源管理器上下文菜单
本文关键字:菜单 上下文 资源管理器 | 更新日期: 2025-03-17 18:47:00
我刚刚使用Visual Basic 2010用C#编写了一个应用程序,花了我很长时间,因为我对C#几乎没有经验。然而,经过迄今为止的大量学习,我目前正在编写一个允许用户右键单击任何图像类型的应用程序,这将打开资源管理器上下文菜单,并显示一个新项目,"上传到网站"。这样,我希望它与我的应用程序通信(通过传递命令?),然后运行我用WebClient UploadClass编写的函数。
我唯一的问题是如何真正做到这一点,我想走注册表项的道路,我对此做了一些广泛的研究,并与壳牌和第三方进行了权衡,我相信这是最适合我尝试做的事情的选择。我知道如何在C#中设置注册表项,然而,我感到困惑的一件事是,我在哪里设置注册表项,以及如何使它们与我的应用程序通信。
我真的很想被指向正确的方向,我还有几个问题要问。
当我真正设置密钥时,我的应用程序存储在哪里?我不希望菜单损坏或缺少命令,我已经在主驱动器中的Program Files文件夹中查找过,但该应用程序实际上并不在那里,它正在使用Visual Studio 2010提供的OneClick安装程序进行安装。
最后,我如何让我的应用程序理解注释,例如,如果我通过了:
C:'MyDir'MyProgram.exe /u "%1
其中/u是上载命令,%1是文件位置,我如何对应用程序进行编码,以了解它在被命令时需要运行上载功能?
任何帮助或想法都将不胜感激,谢谢!
编辑:我一直在研究完成注册表项方面的工作,并深入研究了注册表,我决定使用第三方应用程序安装程序,因为它只会给我更多的空间来提供我想做的事情,例如进一步扩展我的项目。我使用Inno设置编译器来完成这项工作,它提供了强大的工具来轻松设置一些注册表值,我可以将其用于上下文菜单。
然而,我目前发现很难理解注册表。首先,我需要设置哪些键才能将程序与.png、.gif等文件类型关联起来?我只想在他们的浏览器上下文菜单中输入一个简单的条目"Upload with SoftwareName"。
谢谢!
首先,您需要为资源管理器创建一个新的上下文菜单项。这可以通过在HKEY_CLASSES_ROOT中添加注册表项来实现,具体取决于右键单击希望应用程序显示在文件/文件夹上的文件。看看这个例子。
至于与程序的通信,您将在注册表中设置的密钥将采用您在问题中显示的格式。这将基本上用/u文件名参数打开程序。为了在应用程序打开时读取参数,您需要迭代Environment.GetCommandLineArgs(),它包含所有打开的命令行。然后,基于这些内容,您可以执行您想要的方法。
无论你使用什么安装程序,它都会知道应用程序要安装在哪里,并且应该相应地创建注册表值。至于命令行参数:您必须评估参数并调用相应的函数。请参阅此处了解介绍。