|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
09.07.2011, 12:37 | #1 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
вызов из контекстного меню
Нужно вызвать программу из контекстного меню.
Для этого первоначально нужно сделать setup.exe, которая пропишет нужные изменения в реестре. Я попробовал так сделать Код:
Для продолжения работы (так как пока что у меня не получилось setup написать), я сделал саму прогу, и все изменения в реестре вручную прописал: 1. Создал папку HEKY_CLASSES_ROOT//*//____delete В ней по умолчанию был создан файл. В качестве значения я прописал строку, которая будет выплывать при клике правой кнопкой мыши по файлу. В этой папке я создал папку command, в которой по умолчанию был создан файл. Присвоил значение "C:\masm32\bin\____delete.exe"" %1" Вот сам листинг http://zalil.ru/31398963 Ошибка при создании файла. Вероятно, я криво с путём к файлу работал. Хотя MessageBox-ом вывел, вроде всё нормально. Подскажите, пожалуйста, что не так и как исправить. Заранее спасибо. |
09.07.2011, 17:54 | #2 |
Непрофессионал
Участник клуба
Регистрация: 01.01.2008
Сообщений: 1,405
|
1. Что значит при создании файла. Там файл не создаётся, а открывается существующий.
2. После вызова MessageBox регистр eax конечно же уже не содержит адрес строки, поэтому при вызове CreateFile и возникает ошибка. И как то вообще сумбурно. Я мало чего понял. То вы файл какой то открываете, то его же удаляете. То в реестре какие-то файлы с папками создаёте. В реестре нет файлов и папок. В реестре есть разделы и параметры. То какой-то setup пишите. И чего именно из этого не получается?
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------ Страничка с моими программками http://ulex-masm.ru |
09.07.2011, 18:20 | #3 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
с MessageBox спасибо.
Теперь про реестр. Вот хочу я написать утилиту, которая будет удалять файлы. Ну типа стандартного удаления. Так, ради интереса. Для того, чтобы при щелчке правой кнопкой мыши появлялся соответствующий пункт меню, необходимо это всё дело прописать в реестре. В ручную я это прописал так: Создал раздел HEKY_CLASSES_ROOT//*//____delete В ней по умолчанию был создан файл. В качестве значения я прописал строку, которая будет выплывать при клике правой кнопкой мыши по файлу. Далее необходимо чтобы этот пункт меню был каким-то образом связан с программой. Для этого в этом разделе я создал раздел command, в котором по умолчанию был создан файл. Присвоил значение "C:\masm32\bin\____delete.exe"" %1" Всё работает. Теперь же хочу написать setup.exe, который все эти действия выполнит автоматически. Код привёл в первом своём посте, правда код пока что не работающий. |
09.07.2011, 21:24 | #4 |
Непрофессионал
Участник клуба
Регистрация: 01.01.2008
Сообщений: 1,405
|
У меня (на XP) ваш вариант не работает вообще. Там должен быть ещё раздел shell. Вот накидал программку, посмотрите, может чем поможет. Правда я там использовал раздел HKEY_LOCAL_MACHINE\SOFTWARE\Classes - но это отображение HKEY_CLASSES_ROOT. Программка выводит размер файла в MessageBox. Пути к экзешникам естественно мои, надо будет поправить.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------ Страничка с моими программками http://ulex-masm.ru |
09.07.2011, 22:14 | #5 | |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
Цитата:
Спасибо |
|
11.07.2011, 20:20 | #6 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
Всё скопилировалось, однако создаётся только папка ____delete
В ней почему-то не создаётся вложенная папка Command. И значения ключей реестра не устанавливаются. http://zalil.ru/31403109 так что тут не так? Можете подсказать? |
11.07.2011, 21:25 | #7 |
Непрофессионал
Участник клуба
Регистрация: 01.01.2008
Сообщений: 1,405
|
Код:
strName1 - второй парметр функции RegSetValueEx, это указатель на строку, содержащую имя параметра. strName1 - это во первых, не указатель, а во вторых не название параметра, а его значение. REG_EXPAND_SZ - почему expand, у вас же нет переменных в значении параметра.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------ Страничка с моими программками http://ulex-masm.ru |
11.07.2011, 22:53 | #8 |
Форумчанин
Регистрация: 23.04.2009
Сообщений: 346
|
Код:
Нет, ну правда..
|
12.07.2011, 11:39 | #9 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
Спасибо. Но только один косяк с этой функцией остался
;задаём значение ключа iinvoke RegSetValueEx, hKey_1, offset strName1, 0, REG_SZ, offset const_forSaveData, 18 где теперь const_forSaveData=REG_SZ |
12.07.2011, 12:55 | #10 |
Форумчанин
Регистрация: 23.04.2009
Сообщений: 346
|
вопрос непонятен, косяки с функциями - на мсдн
Нет, ну правда..
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
eX-Tools v3.4.1 Набор программ для контекстного меню | Blourid | Софт | 0 | 16.08.2010 15:26 |
отключить возможность вызова контекстного меню | artemavd | Microsoft Office Word | 0 | 04.06.2010 17:50 |
Заблокировать пункт контекстного меню в excel 2007 | Mint86 | Microsoft Office Excel | 13 | 25.05.2010 15:04 |
Как запретить отображение контекстного меню | kovalevskivf | Microsoft Office Excel | 2 | 10.05.2009 15:18 |
При создание edit, в режиме run-time, нет стандартного контекстного меню | slips | Общие вопросы Delphi | 6 | 08.11.2008 17:05 |