C # Передача аргументов через контекстное меню - PullRequest
1 голос
/ 09 ноября 2011

поэтому я создал программу, которая создает раздел реестра на компьютере, который добавляет опцию для отправки вашего файла на ваше устройство.(Сама программа загружает файлы на SD-карту Android.)

Все работает хорошо или, по крайней мере, должно, как только я выясню эту проблему.Когда я щелкаю правой кнопкой мыши по элементу и выбираю свою команду (которая открывается с моей программой), моя программа просто открывается, но аргументы не передаются.

Месяц назад я разработал программу, которая открывается, когда пользователь дважды щелкает (просто двойной щелчок, не щелкая правой кнопкой мыши контекстное меню) файл, он открывает определенную программу, и оттуда я смогвозьмите аргументы.

Почему я не могу из контекстного меню?

Спасибо, простите за длинный пост.

А вот часть моего кода:

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
          {

          }

Вот код реестра.BTw строка 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();

Ответы [ 2 ]

4 голосов
/ 09 ноября 2011

Я предполагаю, что вы создали запись в реестре, которая создает пункт контекстного меню, который вы используете для запуска вашей программы. Вероятно, вам нужно добавить «% 1» после имени исполняемого файла, который вы хотите запустить. В контекстном меню записи реестра% 1 представляет выбранный файл, поэтому добавление этого должно запустить вашу программу и предоставить имя выбранного файла в качестве единственного аргумента.

причина, по которой он работал раньше при двойном щелчке, заключается в том, что windows запустит программу по умолчанию для файла, дважды щелкнутого по файлу с аргументом двойного щелчка,

0 голосов
/ 09 ноября 2011

Вы пробовали искать в параметрах отправителя или EventArgs?Я думаю, что они могут быть чем-то там.Это всего лишь предположение.Если это всего лишь двойной щелчок, то почему будут какие-либо аргументы?Может быть, я просто неправильно понимаю этот момент.В любом случае, может быть, это помогает.Если нет, то вы могли бы немного уточнить, откуда должны исходить аргументы.

Эрик

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...