background img

The New Stuff

Добавление пунктов в контекстное меню

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












Если у вас возникнут какие то вопросы или предложения пишите в комментариях или на почту, отвечу всем.
Удачи в ПРОграммировании!
Скачать проект.
Иногда при разработке некоторых программных продуктов требуется создать пункт в контекстном меню ОС 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 коммент.:

Отправить комментарий

Popular Posts