Расширение оболочки для контекстного меню Windows Explorer

Russian main discussion
  • Author
  • Message
Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Расширение оболочки для контекстного меню Windows Explorer

Post by Instructor »

Image

Установка:
Распакуйте файлы из shellext-bin.zip в ту же папку, где находится AkelPad.exe и запустите shellext-register.cmd для регистрации расширения.

Скачать:
shellext - binaries (x86/x64)
shellext - source

© Ralph Shane

Offline
Posts: 44
Joined: Tue Aug 03, 2010 1:31 pm

Post by Northtech »

Неплохо, имеет смысл добавить в дистрибутив. Иконка правда не очень, потому у себя я её убрал.

Offline
Posts: 12
Joined: Sat Oct 30, 2010 11:39 am
Location: СССР

Post by addhaloka »

Instructor
А зачем в иконке 64x64 размер? Это для чего-то надо или можно только 16x16 оставить?
Northtech wrote:Неплохо, имеет смысл добавить в дистрибутив. Иконка правда не очень, потому у себя я её убрал.
Дык, поменять же можно :)
Image

Сделал установку расширения одним батником, может кому пригодится:

Code: Select all

@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
)

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

А зачем всё это надо, кто-нибудь сможет ответить? Чтобы добавить в контекстное меню "Открыть в AkelPad" надо ставить exe'шник, а потом его регистрировать cmd-файлом? ПЕКТ. Есть куча программ, которые позволяют редактировать контекстное меню проводника, в несколько кликов можно добавить "Открыть в _чём хочешь_".

Offline
Posts: 12
Joined: Sat Oct 30, 2010 11:39 am
Location: СССР

Post by addhaloka »

VladSh wrote:А зачем всё это надо, кто-нибудь сможет ответить? Чтобы добавить в контекстное меню "Открыть в AkelPad" надо ставить exe'шник, а потом его регистрировать cmd-файлом? ПЕКТ. Есть куча программ, которые позволяют редактировать контекстное меню проводника, в несколько кликов можно добавить "Открыть в _чём хочешь_".
Хех. Какой exeшник? :shock: Обычная ActiveX библиотека, которую можно одним кликом (с помощью батника, который я выше привел) вкл./откл. И "куча программ" не нужна (кстати, в них можно иконку в контекст. меню добавить?).

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

addhaloka
Ну да, библиотека и батник - 2 файла.
Встречал утилиты, что всё что хочешь могут) Я когда-то себе контекстные меню так правил, потом задолбался - это ж надо везде править, т.к. привыкаешь, а оно не нужно, т.к. можешь за чужими компами работать, а люди нервничают...
Короче не вижу никакого смысла в этой фиче, тем более какими-то отдельными стрёмными файлами. Как по моему, это должно быть галкой в инсталяторе "Встроить в контекстное меню проводника" (как например у 7-zip и некоторых других) или в настройках программы.

Offline
Posts: 12
Joined: Sat Oct 30, 2010 11:39 am
Location: СССР

Post by addhaloka »

VladSh
Имхо, наоборот отлично подходит для портабл-установки и для работы на чужих компах, в частности. Завершил работу - тыцнул в

Code: Select all

"Расширение оболочки" Exec("%a\ShellExt.cmd") Icon("%a\shellext-x86.dll", 0)
и всё.
А встраивать в инсталлятор и уж тем более какой-то посторонний софт использовать. :?
>Встречал утилиты, что всё что хочешь могут)
Какие-то посторонние костыли, тем более для 7-Zip, например, иконку никакими утилитами не добавить. Потому что в самой библиотеке это не заложено, в отличие от "отдельного стрёмного файла". :)

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

addhaloka
А предлагаемый софт чем не посторонний?
Давайте на каждую мелочь, типа помещения ярлыка на "quick panel" тоже сделаем ActiveX-библиотеку и cmd-файл к ней...
Не здраво это всё.

Offline
Posts: 12
Joined: Sat Oct 30, 2010 11:39 am
Location: СССР

Post by addhaloka »

VladSh
Чем он посторонний? Стандартное расширение оболочки, в многих программах, в том же 7-Zip используется. Тем более выложен Instructor'ом. Очень удобно, я считаю. И по мне, быстрее батник тыцнуть или пункт меню для этого батника, чем лезть в настройки и включать/отключать там. Засим завязываю с флудом, т. к. дальнейшее обсуждение (тут и обсуждать нечего)) бессмысленно.

Offline
Posts: 33
Joined: Wed Apr 13, 2011 8:59 am

Post by InnI »

Win7 x86. Скопировал все файлы в "C:\Program Files\AkelPad\". При запуске shellext-register.cmd появляется окно RegSvr32 с текстом:
--------
Не удалось загрузить модуль "shellext-x86.dll".
Проверьте, что двоичный файл хранится на указанном пути или запустите отладку, чтобы диагностировать проблемы с этим двоичным файлом или зависимыми DLL-файлами.
Не найден указанный модуль.
.
--------
Права администратора не помогают. Вероятно, не может найти путь к файлу, т.к. вручную из консоли с правами администратора регистрируется нормально.

Давно пользуюсь подобным функционалом при помощи такого 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\""


А так можно открывать неассоциированные файлы прямо из проводника двойным кликом

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"

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Все предложения по доработке, исправлениям к автору Ralph Shane в англоязычной теме.

InnI

Code: Select all

@ECHO OFF
set PROCESSOR=x64
if %PROCESSOR_ARCHITECTURE% == x86 (
  if not defined PROCESSOR_ARCHITEW6432 set PROCESSOR=x86
)
start regsvr32 "%~dp0shellext-%PROCESSOR%.dll"
CLS

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

InnI
У меня при запуске первого reg-файла вылетает сообщение:
Редактор реестра wrote:Не удается импортировать "D:\Temp\OpenInAkelPad_menuItem.reg": Указанный файл не является файлом данных реестра.
Возможен импорт только двоичных файлов данных реестра.
> Подскажете как поправить?
Разобрался - кодировка файла д.б. 1200 (UTF-16 LE).

И ещё неудобство в том, что путь жёстко зашит, по моему простенький js был бы лучше.
Вот такой функционал с удовольствием бы себе добавил. Он действительно родной и не "из пушки по воробьям" (ещё бы .NET или Java сюда прекрутили...).

Offline
Posts: 33
Joined: Wed Apr 13, 2011 8:59 am

Post by InnI »

Instructor wrote:А так?
Так работает. Только на Win7 с включённым UAC нужны права администратора.
VladSh wrote:У меня при запуске первого reg-файла вылетает сообщение
Такое сообщение обычно появляется, если отсутствует строка:
Windows Registry Editor Version 5.00

Offline
Posts: 12
Joined: Sat Oct 30, 2010 11:39 am
Location: СССР

Post by addhaloka »

InnI wrote: "Icon"=""C:\\Program Files\\AkelPad\\AkelPad.exe""
И иконка в контекстном меню есть? :o У меня нет, при таком раскладе.
Вообще для добавления в реестр чего-то "путезависимого", лучше, имхо reg.exe (или nircmd, как алт. вариант) использовать в батнике, типа

Code: Select all

@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
)

Offline
Posts: 33
Joined: Wed Apr 13, 2011 8:59 am

Post by InnI »

addhaloka wrote:И иконка в контекстном меню есть?
На Win7 есть, на WinXP нет.
Post Reply