Иногда при разработке некоторых программных продуктов требуется создать пункт в контекстном меню ОС Windows. Чтоб справится с этой задачей нам потребуется поработать с реестром и зарегистрировать наш пункт меню. Вот вкратце что нам предстоит сделать.
Приступим непосредственно к написанию нашей программы.
1. Запускаем VS
2. Создаем новый проект WindowsFormsApplication
3. Добавляем из Toolbox_a две кнопки типа Button (первая кнопка для добавления нового пункта в контекстное меню, а другая соответственно для его удаления), два TextBox_a (первый для ввода названия нового меню, другая для ввода команды которая будет прикреплена к нашем пункту меню) ну и еще два Label_a для того чтоб подписать что есть что. Вот что у вас должно приблизительно получится.
4. Теперь переключимся в редактор кода и подключаем неймспейс для роботы с реестром using Microsoft.Win32.
5. Создадим две переменные для регистрации нашего меню в реестре
private const string MenuName = "Folder\\shell\\NewMenuOption"; private const string Command = "Folder\\shell\\NewMenuOption\\command";
6. Обработаем события Click для первой кнопки "Add", и напишем следующий код:
RegistryKey regmenu = null; RegistryKey regcmd = null; try { regmenu = Registry.ClassesRoot.CreateSubKey(MenuName); if (regmenu != null) regmenu.SetValue("", textBox2.Text); regcmd = Registry.ClassesRoot.CreateSubKey(Command); if (regcmd != null) regcmd.SetValue("", textBox1.Text); } catch (Exception ex) { MessageBox.Show(this, ex.ToString()); } finally { if (regmenu != null) regmenu.Close(); if (regcmd != null) regcmd.Close(); }
7. Теперь обработаем события Click для второй кнопки "Remove" (надеюсь вы догадались что она будет делать, да она будет удалять наш пункт меню если он нам не понравится), и пишем следующий код:
try { RegistryKey reg = Registry.ClassesRoot.OpenSubKey(Command); if (reg != null) { reg.Close(); Registry.ClassesRoot.DeleteSubKey(Command); } reg = Registry.ClassesRoot.OpenSubKey(MenuName); if (reg != null) { reg.Close(); Registry.ClassesRoot.DeleteSubKey(MenuName); } } catch (Exception ex) { MessageBox.Show(this, ex.ToString()); }
Вот и все, теперь можно компилировать наше приложение и пробовать создавать собственные пункты в контекстном меню. Пример работы программы показан ниже:
Если у вас возникнут какие то вопросы или предложения пишите в комментариях или на почту, отвечу всем.
Добавить комментарий