Ранее я рассказывал о том, как добавлять различные стандартные кнопки на панель проводника, а также управлять их порядком и удалять. Для работы произвольной кнопки нужны две вещи: сама кнопка на панели и команда, которую она выполняет. В качестве команды может выступать любой скрипт, будь то PowerShell, CMD, VBS, WSH или JS. В этой статье я для примера покажу, как добавить на панель проводника кнопки Редактировать, Копировать в папку и Переместить в папку.
На этой странице
- Ограничения этого метода
- Добавление кнопки «Редактировать»
- Добавление кнопок «Копировать в папку» и «Переместить в папку»
- Как найти нужный шаблон
Ограничения этого метода
Я должен предупредить вас, что при добавлении произвольных кнопок в шаблоны библиотек придется отказаться от набора стандартных кнопок. Аналогично, если вы добавили какие-либо известные системе кнопки в шаблоны обычных папок, совместить их с произвольными кнопками не получится. По крайней мере, мне не удалось победить эту проблему (если вам известно решение, сообщите мне).
Добавление кнопки «Редактировать»
Такой кнопкой удобно, например, открывать в любимом текстовом редакторе выделенные файлы, когда они с ним не ассоциированы. Файлы HTML у вас открываются в браузере, а кнопка поможет быстро посмотреть код или отредактировать файл. Для этой цели можно использовать любой текстовый редактор. Главное, чтобы он поддерживал в качестве параметра командной строки путь к открываемому файлу (практически все редакторы это умеют).
Скрипт
Для открытия выделенных файлов в редакторе можно использовать этот скрипт на языке JavaScript.
var oArgs= WScript.Arguments; var ObjShell = new ActiveXObject("Shell.Application"); // По умолчанию открывается в блокноте var ApptoRun = "Notepad"; // Либо укажите полный путь к редактору, используя двойные слэши // var ApptoRun = "C:\\Program Files\\Notepad++\\notepad++.exe"; for (var j= 1; j < oArgs.Count(); j++ ) { var AppParams= oArgs( j ); ObjShell.ShellExecute(ApptoRun, AppParams, "", "Open", "1"); }
Скачайте готовый скрипт, либо сохраните код в файл с расширением JS в любой папке,. Из комментариев в коде понятно, что по умолчанию используется Блокнот, но можно указать любой редактор (в этом случае раскомментируйте строку 6 и закомментируйте строку 4).
Создание кнопки
Я опишу процесс добавления произвольной кнопки на примере шаблона папки «Общие элементы». В других шаблонах папок и библиотек все происходит точно так же. Подробнее о шаблонах я рассказывал в рамках статьи об управлении стандартными кнопками.
- Откройте редактор реестра и перейдите в раздел
- Получите полные права на доступ к этому разделу реестра.
- Добавьте в раздел {5c4f28b5-f869-4e84-8e60-f11db97c5cc7} подраздел TasksItemsSelected, если его там нет. Для этого щелкните GUID правой кнопкой мыши, выберите из меню Создать – Новый раздел и укажите для него имя TasksItemsSelected.
- Если раздел TasksItemsSelected уже существует (вы уже экспериментировали или решили начать с библиотек), щелкните правой кнопкой мыши параметр (По умолчанию) и выберите из меню пункт Удалить. Тем самым вы удалите стандартные кнопки, но откроете путь к отображению произвольных кнопок.
- В разделе TasksItemsSelected создайте подраздел с именем 0. Он будет содержать в себе параметры первой кнопки (отсчет начинается с нуля).
- В разделе 0 создайте подраздел с уникальным GUID. Воспользуйтесь генератором GUID, чтобы создать уникальное имя. Я создал {c53ac272-7f42-44f0-9fb2-c660d077a6c8}.
- Щелкните созданный раздел и создайте в нем два строковых параметра:
- Title — определяет название кнопки
- InfoTip – определяет название всплывающей подсказки к кнопке
- В разделе с уникальным GUID последовательно создайте подразделы:
- В разделе command дважды щелкните параметр (По умолчанию) и измените его значение на путь к скрипту:
wscript.exe "C:\Users\Vadik\Documents\scripts\edit.js" %*
Здесь приведен мой путь к скрипту, а вам нужно заменить его на свой.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderTypes\{5c4f28b5-f869-4e84-8e60-f11db97c5cc7}
Этот раздел отвечает за шаблон «Общие элементы» (параметр CanonicalName имеет значение Generic). Набор букв и цифр в имени раздела называется GUID.
В обоих случаях я использовал Редактировать. На данном этапе у вас должна быть такая картина:
shell InvokeTask command
Теперь откройте папку с шаблоном «Общие элементы» или нажмите F5 в уже открытой папке, выделите файл, и вы увидите на панели новую кнопку. Выделите файл или несколько сразу, нажмите кнопку, и все файлы откроются редакторе.
Как это работает
Кнопке назначается команда для вызова скрипта. С помощью параметра %* скрипту передаются параметры:
- %0 — путь к отображаемой папке
- %1, %2, %3 и т.д. пути к выделенным объектам (файлам в данном случае)
Параметр %0 для нашей задачи не требуются, поскольку нужны только пути к файлам. Скрипт перебирает параметры, начиная со первого, и передает каждый из них в качестве параметра командной строки редактору.
Вы можете использовать этот способ для открытия любых файлов в любом приложении.
Добавление кнопок «Копировать в папку» и «Переместить в папку»
О добавлении этих команд в контекстное меню я рассказывал здесь, и в тот раз обошлось без сторонних средств. Для кнопок в панели проводника понадобится скрипт на языке JavaScript. Я позаимствовал его из набора Explorer Bar Utilities, содержащего пять кнопок и опубликованного здесь. Для вас я русифицировал названия кнопок и все диалоги, которые появляются при использовании кнопок.
Процедура аналогична добавлению предыдущей кнопки. За исключением того, что:
- на шаге 5 в разделе TasksItemsSelected создаются подразделы с именами 1 и 2. Все последующие кнопки должны создаваться в разделах 3, 4 и т.д.
- на шаге 6 создается подраздел с другим уникальным GUID (достаточно изменить один символ в том GUID, что использовался ранее)
- на шаге 7 указываются другие имя и всплывающая подсказка для кнопки (Копировать в папку и Переместить в папку)
- на шаге 9 указывается команда с вашим путем к скрипту
;Для кнопки копировать в папку wscript.exe "C:\Users\Vadik\Documents\scripts\ExplorerBarUtilities.js" CopyTo %* ;Для кнопки переместить в папку wscript.exe "C:\Users\Vadik\Documents\scripts\ExplorerBarUtilities.js" MoveTo %*
Ваш реестр будет выглядеть так:
А панель проводника так:
Как найти нужный шаблон
Если вы хотите видеть свои кнопки в других библиотеках, типах папок и даже результатах поиска, описанные выше действия придется произвести над каждым шаблоном. Все они хранятся в разделе реестра
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderTypes
В таблице ниже перечислены шаблоны, которые вас могут заинтересовать. Шаблоны папок и библиотек отличаются друг от друга, несмотря на одинаковые названия.
Тип папки | GUID |
---|---|
Шаблон папки «Общие элементы» | {5c4f28b5-f869-4e84-8e60-f11db97c5cc7} |
Шаблон папки «Документы» | {7d49d726-3c21-4f05-99aa-fdc2c9474656} |
Шаблон папки «Изображения» | {b3690e58-e961-423b-b687-386ebfd83239} |
Шаблон папки «Музыка» | {94d6ddcc-4a68-4175-a374-bd584a510b78} |
Шаблон папки «Видео» | {5fa96407-7e77-483c-ac93-691d05850de8} |
Библиотека «Документы» | {fbb3477e-c9e4-4b3b-a2ba-d3f5d3cd46f9} |
Библиотека «Изображения» | {0b2baaeb-0042-4dca-aa4d-3ee8648d03e5} |
Библиотека «Музыка» | {3f2a72a7-99fa-4ddb-a5a8-c604edf61d6b} |
Библиотека «Видео» | {631958a6-ad0f-4035-a745-28ac066dc6ed} |
Библиотека «Общие элементы» | {5f4eab9a-6833-4f61-899d-31cf46979d49} |
Результаты поиска в библиотеке «Документы» | {36011842-dccc-40fe-aa3d-6177ea401788} |
Результаты поиска в библиотеке «Изображения» | {4dcafe13-e6a7-4c28-be02-ca8c2126280d} |
Результаты поиска в библиотеке «Музыка» | {71689ac1-cc88-45d0-8a22-2943c3e7dfb3} |
Результаты поиска в библиотеке «Видео» | {ea25fbd7-3bf7-409e-b97f-3352240903f4} |
Результаты поиска в библиотеке «Общие элементы» | {7fde1a1e-8b31-49a5-93b8-6be14cfa4943} |
Идея для этой статьи почерпнута с сайта Experts-Exchange.
Константин
Давно искал решение этой проблемы,как добавить кнопки в панель проводника «Копировать в папку» и «Переместить в папку»уж больно их нехвотает мне.Но вот проблемма,я зделал всё как описано в статье в панели проводника появились кнопки но при нажатии на них никаких команд не выполняется,ни каких диологовых окон не появляется.Щелкаеш на них а в ответ тишина..В чем причина?Где ошибка?
Vadim Sterkin
Команда прописана неверно. Перепроверьте шаг 9 (реестр и расположение скрипта). Не видя вашего экспортированного раздела реестра, я ничего не могу сказать.
Константин
Vadim Sterkin,
Вот параметры Реестра:
/удалены/
Эксперементировал я на виртуальной машине,но думаю это к делу не относится.Скрипт расположен на системном диске C: в папке scripts.Надеюсь на ваши замечания,и коректеровку моих ошибок если они были допущены.
Vadim Sterkin
Константин, нет, так не пойдет :) Тут форматирование кривое все. Пишите в тему на форуме. Там можно REG-файл прикрепить или опубликовать с тегом code.
Kvant
Возможно ли сделать кнопку с изображением/иконкой?
Vadim Sterkin
Kvant, мне этот способ неизвестен. Вряд ли это реализуемо правкой реестра.
Шейхнур
Здравствуйте, Вадим. У меня вопрос по поводу кнопок на панели. Возможно ли создать дополнительную кнопку на панели не для выделенного объекта? Дело в том, что после установки Windows Virtual PC (установилось как обновление «Windows6.1-KB958559-x86-RefreshPkg.msu») значок «Создать виртуальную машину» почему-то так и не появился. Пришлось залезть в папку %SystemRoot%\System32 и, отыскав там «VPCWizard.exe», создать ярлык в папке «Виртуальные машины». Возможно ли правкой реестра добавить индивидуально для этой папки кнопку? С уважением.
Vadim Sterkin
Да, в.подраздел TasksNoItemsSelected.
Даниил
Здравствуйте, Вадим!
Спасибо за исчерпывающую статью, но есть вопрос… Можно ли сделать тоже самое но не через HKEY_LOCAL_MACHINE, а через HKEY_CURRENT_USER??
Vadim Sterkin
Даниил, эти параметры системные, пользовательской настройки нет.
Борис
Уважаемый Вадим!
Есть надобность на планшете с установленной Win8, не поднимая экранную клавиатуру, регулярно использовать команду Ctrl z в различных приложениях. для этого хочется иметь в трее автономную исполняемую иконку (кнопку). Если не трудно подскажите , пожалуйста, алгоритм создания такого объекта.
С уважением , Борис Мелешко.
Vadim Sterkin
Борис, обратитесь в форум Программирования или Скриптов на OSZone.
Роман
Вадим, я хотел бы добавить в панель проводника кнопки в виде check box-ов, которые отвечали бы за фильтрацию файлов в текущей папке. Например, при нажатии на панели кнопки «Фильмы» она «залипает» или отмечается галочкой, а в окне отображаются только файлы с расширениями видеофайлов (набор расширений должен задаваться в настройках данной надстройки).
Отдаленным аналогом может послужить программа StExBar (http://www.techsupportalert.com/best-free-windows-explorer-addons.htm#seb0).
Подскажите, какими средствами можно это реализовать? Или как создать программу, подобную StExBar, встраиваемую в интерфейс проводника Windows? Просто задайте направление моего дальнейшего поиска — о каких технологиях почитать. Я уже много всего пересмотрел, но подходящего не нашел. Есть руководство по созданию аддонов (http://www.oszone.net/6946/), но это для установочных дистрибутивов, а меня интересует встраивание в действующую ОС.
Vadim Sterkin
Роман, не думаю, что это возможно. Я бы добавил папки в существующую или новую библиотеку и закинул в избранное сохраненный поиск. Кроме того, есть группировка и фильтры.