Показать сообщение отдельно
Старый 24.10.2015, 19:20   #8
meshanja
Новичок
 
Пол:Мужской
Регистрация: 13.03.2009
Сообщений: 2
Репутация: 0
По умолчанию Re: Как добавить программу в меню "создать" правой кнопки мыши

Нашёл причину почему не добавлялся пункт меню «Создать».
- Шаблоны загружать либо в «Documents and Settings\All Users\Шаблоны», либо в «Windows\ShellNew». Из других папок винда шаблоны не понимает, и пункт в меню «Создать» не появляется.
- Команду по умолчанию писать «Open», а не «Открыть». В русской винде всё равно потом показывает «Открыть», но если написать в реестре «Открыть», то пункт в меню «Создать» не появляется.
- Если тип файла не зарегистрирован в системе, то есть с файлом не ассоциирована никакая программа, то пункт в меню «Создать» не появляется.
Рабочий пример для «.doc» ниже в виде REG-файла или CMD-файла. CMD-файл с комментариями.
В REG-файле нужно заменить пути к программе и к значку на свои, а также вручную создать пустой документ «Word.doc» в папке с шаблонами.
Приведённый CMD-файл сам подставляет путь к программе, если запускается из папки с нужной программой и предварительно указано имя экзешника и номер значка в нём (или путь к значку в другом месте). Может пригодиться, например, если из SFX-архива распаковывать Portable-программу с автозапуском cmd-файла после распаковки.
Всё это проверялось на WinXP SP3.

REG-файл
Код:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.doc]
@="OfficeWord"

[HKEY_CLASSES_ROOT\.doc\ShellNew]
"FileName"="Word.doc"

[HKEY_CLASSES_ROOT\OfficeWord]
"EditFlags"=dword:00010000
"BrowserFlags"=dword:00000008
@="Документ Word"

[HKEY_CLASSES_ROOT\OfficeWord\DefaultIcon]
@="C:\\Portable\\Office\\Word.exe,1"

[HKEY_CLASSES_ROOT\OfficeWord\shell]
@="Open"

[HKEY_CLASSES_ROOT\OfficeWord\shell\Open]

[HKEY_CLASSES_ROOT\OfficeWord\shell\Open\command]
@="C:\\Portable\\Office\\Word.exe \"%1\""
CMD-файл
Цитата:
:: Скрипт добавляет в систему тип файла «.doc», указывая какой программой его открывать и ссылку на значок. А также добавляет пункт создания этого файла в меню «Создать».

:: Создаём папку шаблонов, если её нет. Ибо команда «copy» копирует только в существующие папки.
md "%SystemRoot%\ShellNew"

:: Копируем пустые документы в папку шаблонов, из которой они будут копироваться при создании нового документа. Винда понимает шаблоны для меню «Создать» только из двух папок: «Windows\ShellNew» и «Documents and Settings\All Users\Шаблоны». Здесь «%~dp0» даёт путь к каталогу, из которого запущен батник, причём уже с символом «\» в конце. Справка по командам получения адреса к своему каталогу - call /?
copy "%~dp0ShellNew" "%SystemRoot%\ShellNew" /y

:: Создаём раздел реестра с расширением файла. Значение «параметра по умолчанию» может быть любым (в данном случае OfficeWord), но должно совпадать с названием раздела реестра, который создаём ниже, и в котором будем задавать программу открытия файла, значок и т.д.
reg add "HKCR\.doc" /v "" /t REG_SZ /d "OfficeWord" /f

:: Добавление подраздела «ShellNew» добавляет пункт в меню «Создать» (при наличии остальных добавляемых здесь настроек), а значение параметра «FileName» (в данном случае «Word.doc») задаёт для него имя шаблона из папки «%SystemRoot%\ShellNew».
reg add "HKCR\.doc\ShellNew" /v "FileName" /t REG_SZ /d "Word.doc" /f

:: Название пункта в меню «Создать». В случае наличия русских символов переводим их в OEM-кодировку, например, через «NotePad2».
reg add "HKCR\OfficeWord" /v "" /t REG_SZ /d "Word Document" /f

:: Название команды по умолчанию (при нажатии правой кнопкой мышки на файле). Пишем именно слово «Open», а не «Открыть». В русской винде всё равно будет показываться как «Открыть», но если написать в реестре «Открыть», то пункт в меню «Создать» не появляется.
reg add "HKCR\OfficeWord\shell" /v "" /t REG_SZ /d "Open" /f

:: Создаём путь к открывающей файл программе. Для этого
:: 1. Присваиваем переменной «ExePath» путь к каталогу, из которого запущен скрипт, с добавлением имени нужного экзешника и «"%1"» в конце, что значит открыть этот самый файл после запуска программы. При выполнении скрипта двойной процент станет одинарным, двойные кавычки тоже одинарными, и запишутся как одинарные.
set ExePath=%~dp0Word.exe ""%%1""

:: 2. И пишем получившуюся строку в реестр.
reg add "HKCR\OfficeWord\shell\Open\command" /v "" /t REG_SZ /d "%ExePath%" /f

:: Аналогично добавляем путь к значку для типа файла, который будет в том числе и в меню «Создать».
set IcoPath=%~dp0Word.exe,1
reg add "HKCR\OfficeWord\DefaultIcon" /v "" /t REG_SZ /d "%IcoPath%" /f

meshanja вне форума
 
Ответить с цитированием Вверх
 
Время генерации страницы 0.08181 секунды с 9 запросами