Добавить пункт контекстного меню через реестр - C#
Формулировка задачи:
Всем привет. Есть следующий код:
Я пытаюсь добавить пункт меню для файлов mp3 формата, но почему то пункт не добавляется... Пробовал добавлять для другого формата, работало хорошо. Так в чём проблема? Почему не добавляется пункт в меню? Заранее спасибо.
P.S. - я в реестре записываю путь к программе так: "I:\ConsoleApplication1\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe %1", может вместо %1 надо написать что-нибудь другое? И где можно почитать об этом?
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(); } }
Так, вроде разобрался, у меня на компе установлен AIMP и в значении по умолчанию было установлено значение AIMP.mp3, поэтому пункт меню надо добавлять там... Теперь появился другой вопрос. Когда я выделяю несколько файлов mp3 формата, то на каждый файл запускается отдельная копия программы, как сделать чтобы пути к каждому из файлов передавались массивом в моё приложение? Ведь метод Main консольного приложения принимает массив аргументов:
static void Main(string[] args)
Никто не знает как сделать чтобы при нажатии на пункте меню, когда выделены несколько файлов, не открывалось несколько экземпляров приложения, а передавались пути к файлам в текущее приложение? Может кучеряво объяснил? Помогите пожалуйста.
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; //получать значения
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д