Добавить пункт контекстного меню через реестр - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет. Есть следующий код:
static void Main(string[] args)
        {
            string menu_name = @".MP3\shell\NewMenuOption";
            string command = @".MP3\shell\NewMenuOption\command";
            RegistryKey regmenu = null;
            RegistryKey regcmd = null;
            try
            {
                regmenu = Registry.ClassesRoot.CreateSubKey(menu_name);
                if (regmenu != null)
                    regmenu.SetValue("", "новый пункт");
                regcmd = Registry.ClassesRoot.CreateSubKey(command);
                if (regcmd != null)
                    regcmd.SetValue("", @"I:\ConsoleApplication1\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe %1");
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
            finally
            {
                if (regmenu != null)
                    regmenu.Close();
                if (regcmd != null)
                    regcmd.Close();
            }
        }
Я пытаюсь добавить пункт меню для файлов mp3 формата, но почему то пункт не добавляется... Пробовал добавлять для другого формата, работало хорошо. Так в чём проблема? Почему не добавляется пункт в меню? Заранее спасибо.
Так, вроде разобрался, у меня на компе установлен AIMP и в значении по умолчанию было установлено значение AIMP.mp3, поэтому пункт меню надо добавлять там... Теперь появился другой вопрос. Когда я выделяю несколько файлов mp3 формата, то на каждый файл запускается отдельная копия программы, как сделать чтобы пути к каждому из файлов передавались массивом в моё приложение? Ведь метод Main консольного приложения принимает массив аргументов:
static void Main(string[] args)
P.S. - я в реестре записываю путь к программе так: "I:\ConsoleApplication1\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe %1", может вместо %1 надо написать что-нибудь другое? И где можно почитать об этом?
Никто не знает как сделать чтобы при нажатии на пункте меню, когда выделены несколько файлов, не открывалось несколько экземпляров приложения, а передавались пути к файлам в текущее приложение? Может кучеряво объяснил? Помогите пожалуйста. P.S. - надо использовать SendMessage?

Решение задачи: «Добавить пункт контекстного меню через реестр»

textual
Листинг программы
static string[] arr;
static public string[] CommandLineArgs
{
         get { return arr; }
         set { arr = value; }
}
[STAThread]
static void Main(string[] args)
{
       arr = args;
       .............
}
 
//а потом из программы просто обращаясь
string[] ar = Program.CommandLineArgs; //получать значения

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.231 из 5