Иногда при разработке некоторых программных продуктов требуется создать пункт в контекстном меню ОС Windows. Чтоб справится с этой задачей нам потребуется поработать с реестром и зарегистрировать наш пункт меню. Вот вкратце что нам предстоит сделать.
Если у вас возникнут какие то вопросы или предложения пишите в комментариях или на почту, отвечу всем.
Удачи в ПРОграммировании!
Скачать проект.
Приступим непосредственно к написанию нашей программы.
1. Запускаем VS
2. Создаем новый проект WindowsFormsApplication
3. Добавляем из Toolbox_a две кнопки типа Button (первая кнопка для добавления нового пункта в контекстное меню, а другая соответственно для его удаления), два TextBox_a (первый для ввода названия нового меню, другая для ввода команды которая будет прикреплена к нашем пункту меню) ну и еще два Label_a для того чтоб подписать что есть что. Вот что у вас должно приблизительно получится.
4. Теперь переключимся в редактор кода и подключаем неймспейс для роботы с реестром using Microsoft.Win32.
5. Создадим две переменные для регистрации нашего меню в реестре
Вот и все, теперь можно компилировать наше приложение и пробовать создавать собственные пункты в контекстном меню. Пример работы программы показан ниже:5. Создадим две переменные для регистрации нашего меню в реестре
private const string MenuName = "Folder\\shell\\NewMenuOption";6. Обработаем события Click для первой кнопки "Add", и напишем следующий код:
private const string Command = "Folder\\shell\\NewMenuOption\\command";
RegistryKey regmenu = null;7. Теперь обработаем события Click для второй кнопки "Remove" (надеюсь вы догадались что она будет делать, да она будет удалять наш пункт меню если он нам не понравится), и пишем следующий код:
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();
}
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. Создадим две переменные для регистрации нашего меню в реестре
Вот и все, теперь можно компилировать наше приложение и пробовать создавать собственные пункты в контекстном меню. Пример работы программы показан ниже:5. Создадим две переменные для регистрации нашего меню в реестре
private const string MenuName = "Folder\\shell\\NewMenuOption";6. Обработаем события Click для первой кнопки "Add", и напишем следующий код:
private const string Command = "Folder\\shell\\NewMenuOption\\command";
RegistryKey regmenu = null;7. Теперь обработаем события Click для второй кнопки "Remove" (надеюсь вы догадались что она будет делать, да она будет удалять наш пункт меню если он нам не понравится), и пишем следующий код:
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();
}
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 коммент.:
Отправить комментарий