С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/30: Рейтинг темы: голосов - 30, средняя оценка - 4.93
2 / 2 / 0
Регистрация: 10.11.2009
Сообщений: 134

Создание,добавление,обработка пунктов в контекстном меню Windows

16.08.2010, 17:07. Показов 6046. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дополнительные пункты в контекстном меню windows,я так понимаю, создаются изменением,добавлением в реестре HKEY_CLASSES_ROOT\\"*" необходимых пунктов (для всех файлов). Таким образом при нажатии правой кнопки мыши на любом файле в контекстном меню появятся созданное нами меню. Но возникает вопрос, как в зависимости от нажатого пункта контекстного меню вызывать ту или иную функцию программы. Т.е например вывод названий соответствующих нажатию пунктов контекстного меня. Как это можно реализовать???
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.08.2010, 17:07
Ответы с готовыми решениями:

Обработка файлов в контекстном меню
Идеальным примером является WinRAR, при выделении файла, папки или нескольких файлов и папок и клику ПКМ есть пункт "Добавить в...

Добавление пунктов в системное меню окна
Народ, подскажите, как сюда добавить пункты ? В MFC делалось легко, вот и стало интересно как это сделать в Windows Forms C#

Создание пунктов меню
Не могу создать пункты меню, свойство items заблокировано и не дает сделать меню. Как сделать пункты меню?

15
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
16.08.2010, 18:48
У каждого пункта меню сделай в реестре разные данные, которые передаются в командную строку.
Например для Open в командную строку приложения передается параметр /open %path_to_file%,
а для Print /print %path_to_file%.
1
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
16.08.2010, 20:30
А если приложение уже запущено? Например, добавить файл в список.
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
16.08.2010, 20:53
Т.е. чтобы был запущен один экземпляр приложения, и файлы открывались в нём? Как вариант можно при запуске приложения, искать главное окно и послать ему сообщение (SendMessage) с параметрами. А в главном просто обработать это сообщение и открыть файл.
1
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
16.08.2010, 21:36
А можно кусок кода как отправить и принять сообщение?
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
16.08.2010, 21:46
Чуть позже отпишусь с примером, где-то через час.
1
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
16.08.2010, 23:51
Вот пример, только почему-то C# не хочет нормально отправлять строки... Щас буду пробовать другой метод.
Использование:
1) Запустить exe
2) Запустить то-же exe но с двумя параметрами командной строки, например /param exe
3) Должно быть выдано сообщение с двумя цифрами от первого приложения.

Однако, ситуация интересная.
Вложения
Тип файла: rar WinMain.rar (59.6 Кб, 60 просмотров)
1
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
17.08.2010, 00:30
Вот. Использование то же, только запускать надо не из студии. Итог: Будет выдано сообщение с командной строкой.
Вложения
Тип файла: rar WinMain.rar (60.9 Кб, 193 просмотров)
1
2 / 2 / 0
Регистрация: 10.11.2009
Сообщений: 134
17.08.2010, 08:26  [ТС]
Что-то я не совсем понял, как запустить данную программу, и как она работает? И еще тогда один вопрос, а как сделать инсталлятор, чтобы не нужно было открывать программу, которая будет выводить ту или иную программу в зависимости от переданного параметра, а всего-навсего, после инсталла программы, в контекстном меню Windows появились необходимые пункты, по нажатию по которым происходили те или иные операции, а после деинсталла, пропадали???
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
17.08.2010, 12:33
Данная программа больше по теме body90. А в твоем случае я бы взял какой-нибудь инсталлятор например SmartInstallMaker или AdvancedInstaller, и там есть возможность создания (удаление) ключей реестра при установке программы. Или вопрос в другом?
0
2 / 2 / 0
Регистрация: 10.11.2009
Сообщений: 134
17.08.2010, 13:43  [ТС]
SSTREGG, необходимо создать инсталятор используя VS 2008, так вот как сделать так, чтоб при установке windows приложения выполнить запись в реестр для добавление пунктов в контекстное меню без запуска (отображения) приложения. Как вариант сделать windows-приложение невидимым, т.е после инсталяции выполнить метод данного windows приложения, который записывает данные в реестр, но это наверное не совсем правильно. Как можно выполнить код, в данном случае запись в реестр, после инсталяции программы???? Если же делать как вы говорите вручную, то возникает еще одна проблема, в инсталяроре возможно только создание новых ключей, а мне нужно добавить в данном случае для всех файлов, т.е записать в HKEY_CLASSES_ROOT\*\shell\, и как сделать чтобы дополнительное меню было отдельно выделено, т.е с сепараторами.
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
17.08.2010, 13:48
Цитата Сообщение от Shamans Посмотреть сообщение
нужно добавить в данном случае для всех файлов, т.е записать в HKEY_CLASSES_ROOT\*\shell\, и как сделать чтобы дополнительное меню было отдельно выделено, т.е с сепараторами.
Для этого нужно писать библиотеку. Как именно я не знаю.
0
2 / 2 / 0
Регистрация: 10.11.2009
Сообщений: 134
18.08.2010, 12:59  [ТС]
Народ, да неужто все так сложно??? Неужели невозможно создать пункты в контекстном меню не прибегая к записи в ручную в реестр, а если реестр обновится или изменится, то что тогда??? Может есть другие методы??? А если я захочу картинку к пункту приспособить,или выделить пункты в отдельный блок, как например в winrar...Может необходимо использовать win32, но как??? Подтолкните плизззз...Заранее благодарю...
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
18.08.2010, 13:03
Конечно необходимо использовать Win API + написание COM-dll.
0
2 / 2 / 0
Регистрация: 10.11.2009
Сообщений: 134
18.08.2010, 13:08  [ТС]
В VS2008 при создании инсталятора, возможно настройка записи в реест, но дело в чем мне необходимо в реестре создать дополнительные пункты контекстного меню для файлов всех типов, т.е в реестре ветка HKEY_CLASSES_ROOT\*\, а при настройке записи в реестр войти в эту папку нельзя((((, там можно только новые создавать.Как решить данные проблемы((( Если бы можно было так сделать, то не нужно было бы работать с win32
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
18.08.2010, 13:37
Короче, вот способ чтобы добавить статический пункт меню (т.е. для всех файлов):
Добавь в реестр следующие ключ и значение:
Ключ HKEY_CLASSES_ROOT\*\shell\Текст_пункта_м еню\command
Значение Notepad.exe %1

К примеру.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.08.2010, 13:37
Помогаю со студенческими работами здесь

Блокировка пунктов в контекстном меню
На форме у графика можно выбирать тип отображения и палитру, но как сделать чтоб при выборе типа он становился Enabled? или как то по...

Динамическое добавление пунктов меню
Каким можно реализовать подобное как на скрине? Чтоб была возможность добавить новый элемент, и чтобы каждый элемент подменю содержал...

Русификация пунктов ZP в контекстном меню
Добрый день. Есть программа Zoom player. При установке в контекстное меню интегрируется пара пунктов на английском языке. ...

Добавление пунктов в контекстное меню Windows
Подскажите какие функции,библиотеки win api необходимо использовать в данном случае??? Заранее благодарю......

Добавление пунктов меню.
Посоветуйте как будет лучше и расскажите пожалуйста детали этого процесса. Есть меню. Расположено с лева. В нём уже есть пункты:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru