Explorer上下文菜单

时间:2012-09-03 23:58:57

标签: c# registry install contextmenu

我刚刚使用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等文件类型相关联?在我们的资源管理器上下文菜单中输入一个简单的“使用SoftwareName上传”条目就是我所追求的。

谢谢!

2 个答案:

答案 0 :(得分:2)

首先,您需要为资源管理器创建一个新的上下文菜单项。这可以通过在HKEY_CLASSES_ROOT中添加注册表项来实现,具体取决于您希望应用程序在文件/文件夹上单击右键显示的文件。看看this示例。

至于与您的程序进行通信,您将在注册表中设置的密钥将采用您在问题中显示的格式。这将基本上用/ u filename参数打开你的程序。为了在应用程序打开时读取参数,您需要迭代Environment.GetCommandLineArgs(),其中包含所有打开的命令行。然后根据这些是你可以执行你想要的方法。

答案 1 :(得分:1)

无论您使用哪种安装程序,它都会知道应用程序的安装位置,并应相应地创建注册表值。至于命令行参数:你必须评估参数并调用相应的函数。有关简介,请参阅here