2 / 2 / 0
Регистрация: 10.11.2009
Сообщений: 134
|
|
1 | |
Создание,добавление,обработка пунктов в контекстном меню Windows16.08.2010, 17:07. Показов 5795. Ответов 15
Метки нет (Все метки)
Дополнительные пункты в контекстном меню windows,я так понимаю, создаются изменением,добавлением в реестре HKEY_CLASSES_ROOT\\"*" необходимых пунктов (для всех файлов). Таким образом при нажатии правой кнопки мыши на любом файле в контекстном меню появятся созданное нами меню. Но возникает вопрос, как в зависимости от нажатого пункта контекстного меню вызывать ту или иную функцию программы. Т.е например вывод названий соответствующих нажатию пунктов контекстного меня. Как это можно реализовать???
0
|
16.08.2010, 17:07 | |
Ответы с готовыми решениями:
15
Обработка файлов в контекстном меню Добавление пунктов в системное меню окна Создание пунктов меню Блокировка пунктов в контекстном меню |
Почетный модератор
|
|
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
|
Почетный модератор
|
|
16.08.2010, 20:53 | 4 |
Т.е. чтобы был запущен один экземпляр приложения, и файлы открывались в нём? Как вариант можно при запуске приложения, искать главное окно и послать ему сообщение (SendMessage) с параметрами. А в главном просто обработать это сообщение и открыть файл.
1
|
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
|
|
16.08.2010, 21:36 | 5 |
А можно кусок кода как отправить и принять сообщение?
0
|
Почетный модератор
|
|
16.08.2010, 23:51 | 7 |
Вот пример, только почему-то C# не хочет нормально отправлять строки... Щас буду пробовать другой метод.
Использование: 1) Запустить exe 2) Запустить то-же exe но с двумя параметрами командной строки, например /param exe 3) Должно быть выдано сообщение с двумя цифрами от первого приложения. Однако, ситуация интересная.
1
|
2 / 2 / 0
Регистрация: 10.11.2009
Сообщений: 134
|
|
17.08.2010, 08:26 [ТС] | 9 |
Что-то я не совсем понял, как запустить данную программу, и как она работает? И еще тогда один вопрос, а как сделать инсталлятор, чтобы не нужно было открывать программу, которая будет выводить ту или иную программу в зависимости от переданного параметра, а всего-навсего, после инсталла программы, в контекстном меню Windows появились необходимые пункты, по нажатию по которым происходили те или иные операции, а после деинсталла, пропадали???
0
|
Почетный модератор
|
|
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
|
2 / 2 / 0
Регистрация: 10.11.2009
Сообщений: 134
|
|
18.08.2010, 12:59 [ТС] | 13 |
Народ, да неужто все так сложно??? Неужели невозможно создать пункты в контекстном меню не прибегая к записи в ручную в реестр, а если реестр обновится или изменится, то что тогда??? Может есть другие методы??? А если я захочу картинку к пункту приспособить,или выделить пункты в отдельный блок, как например в winrar...Может необходимо использовать win32, но как??? Подтолкните плизззз...Заранее благодарю...
0
|
2 / 2 / 0
Регистрация: 10.11.2009
Сообщений: 134
|
|
18.08.2010, 13:08 [ТС] | 15 |
В VS2008 при создании инсталятора, возможно настройка записи в реест, но дело в чем мне необходимо в реестре создать дополнительные пункты контекстного меню для файлов всех типов, т.е в реестре ветка HKEY_CLASSES_ROOT\*\, а при настройке записи в реестр войти в эту папку нельзя((((, там можно только новые создавать.Как решить данные проблемы((( Если бы можно было так сделать, то не нужно было бы работать с win32
0
|
Почетный модератор
|
|
18.08.2010, 13:37 | 16 |
Короче, вот способ чтобы добавить статический пункт меню (т.е. для всех файлов):
Добавь в реестр следующие ключ и значение: Ключ HKEY_CLASSES_ROOT\*\shell\Текст_пункта_меню\command Значение Notepad.exe %1 К примеру.
2
|
18.08.2010, 13:37 | |
18.08.2010, 13:37 | |
Помогаю со студенческими работами здесь
16
Динамическое добавление пунктов меню Русификация пунктов ZP в контекстном меню Добавление пунктов в контекстное меню Windows Добавление пунктов меню. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |