Загрузка страницы..
Добавление пунктов в контекстное меню, C#
Изменение контекстного меню Windows при помощи C#
Добавление пунктов в контекстное меню, <span style="color: #28A84C">C#</span>
2014-05-14T02:05 14 мая 2014 02:05
Просмотров: 7924

Иногда при разработке некоторых программных продуктов требуется создать пункт в контекстном меню ОС 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());
       }

Вот и все, теперь можно компилировать наше приложение и пробовать создавать собственные пункты в контекстном меню. Пример работы программы показан ниже:

Если у вас возникнут какие то вопросы или предложения пишите в комментариях или на почту, отвечу всем.

Скачать проект.



Комментарии: 0

Комментарий пока нет, стань первым!

Добавить комментарий

up
Яндекс.Метрика Яндекс.Метрик