Subscribers  RSS  Twitter  Facebook


«

»

Как добавить произвольные кнопки на панель проводника Windows 7

Ранее я рассказывал о том, как добавлять различные стандартные кнопки на панель проводника, а также управлять их порядком и удалять. Для работы произвольной кнопки нужны две вещи: сама кнопка на панели и команда, которую она выполняет. В качестве команды может выступать любой скрипт, будь то 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).

Создание кнопки

Я опишу процесс добавления произвольной кнопки на примере шаблона папки «Общие элементы». В других шаблонах папок и библиотек все происходит точно так же. Подробнее о шаблонах я рассказывал в рамках статьи об управлении стандартными кнопками.

  1. Откройте редактор реестра и перейдите в раздел
  2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderTypes\{5c4f28b5-f869-4e84-8e60-f11db97c5cc7}

    Этот раздел отвечает за шаблон «Общие элементы» (параметр CanonicalName имеет значение Generic). Набор букв и цифр в имени раздела называется GUID.

  3. Получите полные права на доступ к этому разделу реестра.
  4. Добавьте в раздел {5c4f28b5-f869-4e84-8e60-f11db97c5cc7} подраздел TasksItemsSelected, если его там нет. Для этого щелкните GUID правой кнопкой мыши, выберите из меню СоздатьНовый раздел и укажите для него имя TasksItemsSelected.
  5. Если раздел TasksItemsSelected уже существует (вы уже экспериментировали или решили начать с библиотек), щелкните правой кнопкой мыши параметр (По умолчанию) и выберите из меню пункт Удалить. Тем самым вы удалите стандартные кнопки, но откроете путь к отображению произвольных кнопок.
  6. В разделе TasksItemsSelected создайте подраздел с именем 0. Он будет содержать в себе параметры первой кнопки (отсчет начинается с нуля).
  7. В разделе 0 создайте подраздел с уникальным GUID. Воспользуйтесь генератором GUID, чтобы создать уникальное имя. Я создал {c53ac272-7f42-44f0-9fb2-c660d077a6c8}.
  8. Щелкните созданный раздел и создайте в нем два строковых параметра:
    • Title — определяет название кнопки
    • InfoTip – определяет название всплывающей подсказки к кнопке
  9. В обоих случаях я использовал Редактировать. На данном этапе у вас должна быть такая картина:

    Название и подсказка для кнопки

  10. В разделе с уникальным GUID последовательно создайте подразделы:
  11. shell
    	InvokeTask
    		command
  12. В разделе command дважды щелкните параметр (По умолчанию) и измените его значение на путь к скрипту:
    wscript.exe "C:\Users\Vadik\Documents\scripts\edit.js" %*

    Команда для запуска скрипта кнопкой

    Здесь приведен мой путь к скрипту, а вам нужно заменить его на свой.

Теперь откройте папку с шаблоном «Общие элементы» или нажмите 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

Вадим является владельцем этого блога, и большинство записей здесь вышло из-под его пера. Он также давно и успешно занимается развитием сообщества OSZone.net. Подробнее обо всем этом здесь.

TwitterFacebook

Комментариев: 10 RSS Comments

  1. Константин  

    Давно искал решение этой проблемы,как добавить кнопки в панель проводника «Копировать в папку» и «Переместить в папку»уж больно их нехвотает мне.Но вот проблемма,я зделал всё как описано в статье в панели проводника появились кнопки но при нажатии на них никаких команд не выполняется,ни каких диологовых окон не появляется.Щелкаеш на них а в ответ тишина..В чем причина?Где ошибка?

      (Цитировать)  (Ответить)

    Ваша оценка: +1 -1 0

  2. Vadim Sterkin  

    Константин: Щелкаеш на них а в ответ тишина..В чем причина?Где ошибка? 

    Команда прописана неверно. Перепроверьте шаг 9 (реестр и расположение скрипта). Не видя вашего экспортированного раздела реестра, я ничего не могу сказать.

      (Цитировать)  (Ответить)

    Ваша оценка: +1 -1 0

  3. Константин  

    Vadim Sterkin,
    Вот параметры Реестра:
    /удалены/

    Эксперементировал я на виртуальной машине,но думаю это к делу не относится.Скрипт расположен на системном диске C: в папке scripts.Надеюсь на ваши замечания,и коректеровку моих ошибок если они были допущены.

      (Цитировать)  (Ответить)

    Ваша оценка: +1 -1 0

  4. Vadim Sterkin  

    Константин, нет, так не пойдет :) Тут форматирование кривое все. Пишите в тему на форуме. Там можно REG-файл прикрепить или опубликовать с тегом code.

      (Цитировать)  (Ответить)

    Ваша оценка: +1 -1 0

  5. Kvant  

    Возможно ли сделать кнопку с изображением/иконкой?

      (Цитировать)  (Ответить)

    Ваша оценка: +1 -1 0

  6. Vadim Sterkin  

    Kvant, мне этот способ неизвестен. Вряд ли это реализуемо правкой реестра.

      (Цитировать)  (Ответить)

    Ваша оценка: +1 -1 0

  7. Шейхнур  

    Здравствуйте, Вадим. У меня вопрос по поводу кнопок на панели. Возможно ли создать дополнительную кнопку на панели не для выделенного объекта? Дело в том, что после установки Windows Virtual PC (установилось как обновление «Windows6.1-KB958559-x86-RefreshPkg.msu») значок «Создать виртуальную машину» почему-то так и не появился. Пришлось залезть в папку %SystemRoot%\System32 и, отыскав там «VPCWizard.exe», создать ярлык в папке «Виртуальные машины». Возможно ли правкой реестра добавить индивидуально для этой папки кнопку? С уважением.

      (Цитировать)  (Ответить)

    Ваша оценка: +1 -1 0

  8. Vadim Sterkin  

    Шейхнур: не для выделенного объекта? »

    Да, в.подраздел TasksNoItemsSelected.

      (Цитировать)  (Ответить)

    Ваша оценка: +1 -1 0

  9. Даниил  

    Здравствуйте, Вадим!
    Спасибо за исчерпывающую статью, но есть вопрос… Можно ли сделать тоже самое но не через HKEY_LOCAL_MACHINE, а через HKEY_CURRENT_USER??

      (Цитировать)  (Ответить)

    Ваша оценка: +1 -1 0

    1. Vadim Sterkin  

      Даниил, эти параметры системные, пользовательской настройки нет.

        (Цитировать)  (Ответить)

      Ваша оценка: +1 -1 0

Добавить комментарий

Обязательны человеческое имя и адрес электронной почты (он не публикуется).

Выделите текст и нажмите кнопку. Ссылки можно вставлять как есть.

bib-quotecode

Блокируются комментарии, написанные по-албански, либо без пробелов после знаков препинания.