C# 通过上下文菜单传递参数

标签 c# menu arguments

所以我制作了一个程序,可以在电脑上创建一个注册表项,它添加了一个选项来将你的文件推送到你的设备。 (程序本身会将文件推送到您的 Android SD 卡。)

一旦我解决了这个问题,一切都运行良好,或者至少应该运行良好。当我右键单击一个项目并选择我的命令(即用我的程序打开)时,我的程序只是打开,但没有传递任何参数。

一个月前,我设计了一个程序,当用户双击(只需双击,而不是通过上下文菜单右键单击)一个文件时,它会打开特定的程序,然后我可以从那里获取参数.

为什么我不能从上下文菜单?

谢谢,抱歉发帖冗长。

这是我的部分代码:

private void Form1_Load(object sender, EventArgs e)
    {
        string c = textBox3.Text;

          string[] args = System.Environment.GetCommandLineArgs();

          try
          {

              string location = args[1];
              MessageBox.Show(location);
              //For testing purposes only

              Properties.Settings.Default.thinglocation = location;
              Properties.Settings.Default.Save();
              Process();
          }

          catch
          {

          }

这是注册码。顺便说一句,字符串 c 是“C:\File push.exe”我程序的位置。

 string MenuName = "*\\shell\\NewMenuOption";
                string Command = "*\\shell\\NewMenuOption\\command";

                RegistryKey regmenu = null;
                RegistryKey regcmd = null;
                try
                {
                    regmenu = Registry.ClassesRoot.CreateSubKey(MenuName);
                    if (regmenu != null)
                        regmenu.SetValue("", "Push to Android");
                    regcmd = Registry.ClassesRoot.CreateSubKey(Command);
                    if (regcmd != null)
                        regcmd.SetValue("", c +"%1");
                }
                catch (Exception ex)
                {
                    MessageBox.Show(this, ex.ToString());
                }
                finally
                {
                    if (regmenu != null)
                        regmenu.Close();
                    if (regcmd != null)
                        regcmd.Close();

最佳答案

我假设您已经创建了一个注册表项,它创建了您用来启动程序的上下文菜单项。可能是您需要在要启动的 exe 名称后添加“%1”。在上下文菜单中,注册表项 %1 代表所选文件,因此添加它应该会启动您的程序并提供所选文件的名称作为单个参数。

之前双击时它起作用的原因是 Windows 将为双击的文件启动默认程序,并将双击的文件作为参数。

关于C# 通过上下文菜单传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8057987/

相关文章:

css - 如何在 css 中使圆形链接响应?

javascript - 在 JavaScript 中哪里执行参数验证?

c# - 如何在 gridview itemtemplate 中的客户端编写条件?

c# - Graphics.DrawImage() - 抛出内存不足异常

c# - 如何从 formView->EditItemTemplate->Textbox 中获取值?

css - 自动调整下拉导航菜单

javascript - 防止单击和关闭覆盖菜单 css 时的主体滚动

C# - TextBox_TextChanged 事件 - 恢复到以前的值

c++ - 单词比较 - Vectors/Getopt

c - 如何从C中的.txt文件读取和打印前5个整数?