View previous topic :: View next topic |
Author |
Message |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 6250
|
Posted: Mon Jun 03, 2013 4:27 am Post subject: Расширение оболочки для контекстного меню Windows Explorer |
|
|
Установка:
Распакуйте файлы из shellext-bin.zip в ту же папку, где находится AkelPad.exe и запустите shellext-register.cmd для регистрации расширения.
Скачать:
shellext - binaries (x86/x64)
shellext - source
© Ralph Shane |
|
Back to top |
|
 |
Northtech
Joined: 03 Aug 2010 Posts: 44
|
Posted: Sat Jun 08, 2013 11:38 am Post subject: |
|
|
Неплохо, имеет смысл добавить в дистрибутив. Иконка правда не очень, потому у себя я её убрал. |
|
Back to top |
|
 |
addhaloka
Joined: 30 Oct 2010 Posts: 12 Location: СССР
|
Posted: Sun Jun 16, 2013 11:15 am Post subject: |
|
|
Instructor
А зачем в иконке 64x64 размер? Это для чего-то надо или можно только 16x16 оставить?
Northtech wrote: | Неплохо, имеет смысл добавить в дистрибутив. Иконка правда не очень, потому у себя я её убрал. |
Дык, поменять же можно
Сделал установку расширения одним батником, может кому пригодится: ShellExt.cmd Code: | @echo off
cls
color 1b
%~d0
cd "%~dp0"
set PROCESSOR=x64
if %PROCESSOR_ARCHITECTURE% == x86 (
if not defined PROCESSOR_ARCHITEW6432 set PROCESSOR=x86
)
reg query HKCR\^*\shellex\ContextMenuHandlers | findstr /i "AkelPad" >NUL
if not errorlevel 1 (
regsvr32 /u /s shellext-%PROCESSOR%.dll
cls
echo.
echo Интеграция с оболочкой отключена. Нажмите любую клавишу для выхода . . .
pause >NUL
) else (
regsvr32 /s shellext-%PROCESSOR%.dll
cls
echo.
echo Интеграция с оболочкой включена. Нажмите любую клавишу для выхода . . .
pause >NUL
) |
|
|
Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 3076 Location: Киев, Русь
|
Posted: Mon Jun 17, 2013 9:29 am Post subject: |
|
|
А зачем всё это надо, кто-нибудь сможет ответить? Чтобы добавить в контекстное меню "Открыть в AkelPad" надо ставить exe'шник, а потом его регистрировать cmd-файлом? ПЕКТ. Есть куча программ, которые позволяют редактировать контекстное меню проводника, в несколько кликов можно добавить "Открыть в _чём хочешь_". |
|
Back to top |
|
 |
addhaloka
Joined: 30 Oct 2010 Posts: 12 Location: СССР
|
Posted: Mon Jun 17, 2013 11:31 am Post subject: |
|
|
VladSh wrote: | А зачем всё это надо, кто-нибудь сможет ответить? Чтобы добавить в контекстное меню "Открыть в AkelPad" надо ставить exe'шник, а потом его регистрировать cmd-файлом? ПЕКТ. Есть куча программ, которые позволяют редактировать контекстное меню проводника, в несколько кликов можно добавить "Открыть в _чём хочешь_". |
Хех. Какой exeшник? Обычная ActiveX библиотека, которую можно одним кликом (с помощью батника, который я выше привел) вкл./откл. И "куча программ" не нужна (кстати, в них можно иконку в контекст. меню добавить?). |
|
Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 3076 Location: Киев, Русь
|
Posted: Mon Jun 17, 2013 3:44 pm Post subject: |
|
|
addhaloka
Ну да, библиотека и батник - 2 файла.
Встречал утилиты, что всё что хочешь могут) Я когда-то себе контекстные меню так правил, потом задолбался - это ж надо везде править, т.к. привыкаешь, а оно не нужно, т.к. можешь за чужими компами работать, а люди нервничают...
Короче не вижу никакого смысла в этой фиче, тем более какими-то отдельными стрёмными файлами. Как по моему, это должно быть галкой в инсталяторе "Встроить в контекстное меню проводника" (как например у 7-zip и некоторых других) или в настройках программы. |
|
Back to top |
|
 |
addhaloka
Joined: 30 Oct 2010 Posts: 12 Location: СССР
|
Posted: Mon Jun 17, 2013 4:19 pm Post subject: |
|
|
VladSh
Имхо, наоборот отлично подходит для портабл-установки и для работы на чужих компах, в частности. Завершил работу - тыцнул в пункт меню Code: | "Расширение оболочки" Exec("%a\ShellExt.cmd") Icon("%a\shellext-x86.dll", 0) |
и всё.
А встраивать в инсталлятор и уж тем более какой-то посторонний софт использовать.
>Встречал утилиты, что всё что хочешь могут)
Какие-то посторонние костыли, тем более для 7-Zip, например, иконку никакими утилитами не добавить. Потому что в самой библиотеке это не заложено, в отличие от "отдельного стрёмного файла".  |
|
Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 3076 Location: Киев, Русь
|
Posted: Mon Jun 17, 2013 4:28 pm Post subject: |
|
|
addhaloka
А предлагаемый софт чем не посторонний?
Давайте на каждую мелочь, типа помещения ярлыка на "quick panel" тоже сделаем ActiveX-библиотеку и cmd-файл к ней...
Не здраво это всё. |
|
Back to top |
|
 |
addhaloka
Joined: 30 Oct 2010 Posts: 12 Location: СССР
|
Posted: Mon Jun 17, 2013 4:57 pm Post subject: |
|
|
VladSh
Чем он посторонний? Стандартное расширение оболочки, в многих программах, в том же 7-Zip используется. Тем более выложен Instructor'ом. Очень удобно, я считаю. И по мне, быстрее батник тыцнуть или пункт меню для этого батника, чем лезть в настройки и включать/отключать там. Засим завязываю с флудом, т. к. дальнейшее обсуждение (тут и обсуждать нечего)) бессмысленно. |
|
Back to top |
|
 |
InnI
Joined: 13 Apr 2011 Posts: 33
|
Posted: Tue Jun 18, 2013 7:58 am Post subject: |
|
|
Win7 x86. Скопировал все файлы в "C:\Program Files\AkelPad\". При запуске shellext-register.cmd появляется окно RegSvr32 с текстом:
--------
Не удалось загрузить модуль "shellext-x86.dll".
Проверьте, что двоичный файл хранится на указанном пути или запустите отладку, чтобы диагностировать проблемы с этим двоичным файлом или зависимыми DLL-файлами.
Не найден указанный модуль.
.
--------
Права администратора не помогают. Вероятно, не может найти путь к файлу, т.к. вручную из консоли с правами администратора регистрируется нормально.
Давно пользуюсь подобным функционалом при помощи такого reg-файла
reg-файл
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\AkelPad]
"Icon"="\"C:\\Program Files\\AkelPad\\AkelPad.exe\""
[HKEY_CLASSES_ROOT\*\shell\AkelPad\command]
@="\"C:\\Program Files\\AkelPad\\AkelPad.exe\" \"%1\""
А так можно открывать неассоциированные файлы прямо из проводника двойным кликом
reg-файл
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Unknown\shell\open\command]
@="\"C:\\Program Files\\AkelPad\\AkelPad.exe\" \"%1\""
[HKEY_CLASSES_ROOT\Unknown\shell]
@="open" |
|
Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 6250
|
Posted: Tue Jun 18, 2013 8:15 am Post subject: |
|
|
Все предложения по доработке, исправлениям к автору Ralph Shane в англоязычной теме.
InnI
А так?
Code: | @ECHO OFF
set PROCESSOR=x64
if %PROCESSOR_ARCHITECTURE% == x86 (
if not defined PROCESSOR_ARCHITEW6432 set PROCESSOR=x86
)
start regsvr32 "%~dp0shellext-%PROCESSOR%.dll"
CLS
|
|
|
Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 3076 Location: Киев, Русь
|
Posted: Tue Jun 18, 2013 8:22 am Post subject: |
|
|
InnI
У меня при запуске первого reg-файла вылетает сообщение:
Редактор реестра wrote: | Не удается импортировать "D:\Temp\OpenInAkelPad_menuItem.reg": Указанный файл не является файлом данных реестра.
Возможен импорт только двоичных файлов данных реестра. | > Подскажете как поправить?
Разобрался - кодировка файла д.б. 1200 (UTF-16 LE).
И ещё неудобство в том, что путь жёстко зашит, по моему простенький js был бы лучше.
Вот такой функционал с удовольствием бы себе добавил. Он действительно родной и не "из пушки по воробьям" (ещё бы .NET или Java сюда прекрутили...). |
|
Back to top |
|
 |
InnI
Joined: 13 Apr 2011 Posts: 33
|
Posted: Tue Jun 18, 2013 8:45 am Post subject: |
|
|
Так работает. Только на Win7 с включённым UAC нужны права администратора.
VladSh wrote: | У меня при запуске первого reg-файла вылетает сообщение |
Такое сообщение обычно появляется, если отсутствует строка:
Windows Registry Editor Version 5.00 |
|
Back to top |
|
 |
addhaloka
Joined: 30 Oct 2010 Posts: 12 Location: СССР
|
Posted: Tue Jun 18, 2013 10:04 am Post subject: |
|
|
InnI wrote: |
"Icon"="\"C:\\Program Files\\AkelPad\\AkelPad.exe\""
|
И иконка в контекстном меню есть? У меня нет, при таком раскладе.
Вообще для добавления в реестр чего-то "путезависимого", лучше, имхо reg.exe (или nircmd, как алт. вариант) использовать в батнике, типа такого Code: | @echo off
cls
%~d0
cd "%~dp0"
reg query HKCR\^*\shell | findstr /i "AkelPad" >NUL
if not errorlevel 1 (
reg delete HKCR\^*\shell\AkelPad /f >NUL
cls
echo.
echo Интеграция с оболочкой отключена. Нажмите любую клавишу для выхода . . .
pause >NUL
) else (
rem reg add HKCR\^*\shell\AkelPad /v Icon /d "%cd%\AkelPad.exe,0" /f >NUL
reg add HKCR\^*\shell\AkelPad\command /ve /d \""%cd%\AkelPad.exe\" \"%%1"" /f >NUL
cls
echo.
echo Интеграция с оболочкой включена. Нажмите любую клавишу для выхода . . .
pause >NUL
) |
|
|
Back to top |
|
 |
InnI
Joined: 13 Apr 2011 Posts: 33
|
Posted: Tue Jun 18, 2013 10:44 am Post subject: |
|
|
addhaloka wrote: | И иконка в контекстном меню есть? |
На Win7 есть, на WinXP нет. |
|
Back to top |
|
 |
|