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

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

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

Author24 — интернет-сервис помощи студентам
Дополнительные пункты в контекстном меню windows,я так понимаю, создаются изменением,добавлением в реестре HKEY_CLASSES_ROOT\\"*" необходимых пунктов (для всех файлов). Таким образом при нажатии правой кнопки мыши на любом файле в контекстном меню появятся созданное нами меню. Но возникает вопрос, как в зависимости от нажатого пункта контекстного меню вызывать ту или иную функцию программы. Т.е например вывод названий соответствующих нажатию пунктов контекстного меня. Как это можно реализовать???
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.08.2010, 17:07
Ответы с готовыми решениями:

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

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

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

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

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

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

К примеру.
2
18.08.2010, 13:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.08.2010, 13:37
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru