Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Shell Ace

Автор: Aniskin
Дата сообщения: 25.12.2013 07:11
Хочу представить сообществу свою разработку - библиотеку Shell Ace. Библиотека позволяет с помощью среды разработки Delphi быстро создавать различные расширения оболочки, не вникая в особенности реализации расширения в конкретной версии Windows. На данный момент поддерживаются версии Delphi начиная с 7 вплоть до XE5. Начиная с версии XE2 можно создавать полноценные 64 расширения оболочки. Shell Ace интегрируется в IDE Delphi, и позволяет создавать каркасы расширений простым выбором соответствующего значка в окне New Items:



Библиотека полностью бесплатна для некоммерческого использования, но исходные коды не предоставляются.

На сегодняшний день Shell Ace позволяет создавать следующие типы расширений:


Auto play hander - позволяет обрабатывать такие события, как появление диска с медиа контентом.
Browser helper object hander - позволяет подключатся к событиям, происходящим в Internet Explorer и Windows Explorer.
Context menu handler - позволяет добавить дополнительные пункты меню для файла или папки.
Data object handler - позволяет добавить дополнительные форматы, в которых будет представлен файл при копировании его в буфер обмена. Например, при копировании графического файла можно добавить копирование его графического содержимого, и можно будет вставить картинку из буфера обмена в Paint или Word.
Desk band handler - позволяет добавить на панель задач небольшое окно, в котором можно разместить, например, кнопки управления плеером. Поддерживаются все особенности, связанные с Aero в Windows Vista и выше.
Disk cleanup handler - позволяет добавить в программу Disk Cleanup дополнительные возможности очистки жесткого диска.
Drag and drop context menu handler - позволяет добавить дополнительные пункты в меню, появляющемся при перетаскивании файла или папки левой кнопкой мыши.
Drop target handler - позволяет определить реакцию на перетаскивание объектов (не только файлов, но и, например, текста из Word) на файл.
Explorer band handler - позволяет добавить горизонтальную или вертикальную панель в окно Internet explorer.
Explorer command handler - позволяет добавить (только в 2000, XP и 7!!!) дополнительные кнопки на панель Windows Explorer.
Hook handler - позволяет перехватывать операции пользователя в проводника над папками и принтерами.
Icon handler - позволяет создавать иконки для файлов.
info tip handler - позволяет определять для файлов текст всплывающей подсказки
MIME filter handler - позволяет перехватывать (на уровне отдельной программы или системы в целом) загрузку через WebBrowser файлов с определенным MIME type.
Overlay icon handler - позволяет определить для любого файла дополнительную небольшую оверлейную иконку.
Preview handler - позволяет отображать в окне Windows Explorer (начиная с Vista) содержимое файла.
Property sheet handler - позволяет добавить для файла дополнительные вкладки в окне Свойства.
Property store handler - позволяет в системах до Vista добавить новые колонки в окно Windows Explorer, а начиная с Vista определять значения свойств файла.
Protocol handler - позволяет производить (на уровне отдельной программы или системы в целом) загрузку через WebBrowser файлов с новых протоколов.
Send to hander - позволяет добавить дополнительные пункты в меню Send to.
Thumbnail handler - позволяет создавать превью для файлов.
Tool band handler - позволяет добавить дополнительную инструментальную
панель в окно Internet Explorer.


Что же нужно сделать, что бы создать свое первое расширение оболочки с помощью Shell Ace.

1) Сперва нужно скачать дистрибутив.

2) Запустить скачанный файл. Появится окно, в котором можно выбрать папку, в которую будет установлена библиотека, и версии Delphi, в которые должна интегрироваться Shell Ace.



3) После нажатия на кнопку Install будет произведено копирование всех необходимых файлов и интеграция с выбранными версиями Delphi.

4) Теперь можно запускать любимую версию Delphi.

5) Создадим к примеру, "классическое" расширение, добавляющее в контекстное меню файла новые пункты. Сначала нужно создать проект расширения. Для этого нужно в меню File выбрать пункт New\Other. В открывшемся окне на вкладке Windows extension нужно выбрать элемент Project. Будет создан новый проект dll, в котором будут прописаны четыре стандартные для COM экспортируемые функции.

6) После того, как создан проект, в него нужно добавить непосредственно само расширение. В том же самом окне New Items нужно выбрать значок Context menu handler. Появится диалог создания обработчика, на котором можно выбрать имя создаваемого класса и перекрываемые методы. Для изучения стоит выбрать все доступные методы, и дополнительно включить галку "Create sample". После нажатия на кнопку OK в проект будет добавлен новый модуль, в котором будет прописан исходный код расширения. Проект можно смело компилировать. Практически весь код, создаваемые при включенной галке "Create sample" работает с файлами с расширением BMP2. Это сделано для того, что бы при тестировании не затрагивать работу уже установленных системных расширений оболочки. При этом КЭП мне подсказывает, что BMP2 файл можно получить простым переименованием расширения BMP файла.

7) Полученный dll файл нужно регистрировать в системе. Делается это с помощью утилиты regsvr32, входящей в состав ОС Windows. Более подробно о регистрации здесь.

8) После успешной регистрации расширения можно протестировать созданное расширение, вызвав контекстное меню BMP2 файла в Проводнике. Не забывайте, что битность расширения должна совпадать с битностью Windows. Если вы используете 64 битную Windows, а создали 32 битное расширение, то даже после его регистрации оно не может быть использовано в Проводнике, поскольку Проводник просто не сможет его загрузить.

Теперь вы умеете создавать расширения оболочки. Любые другие расширения создаются аналогично. Вообще, создание расширения с помощь Shell Ace сводится к выбору нужного типа расширения в IDE и написанию кода отдельных методов. В общем, ничего сложного. А если что-то непонятно, то спрашивайте, отвечу на любой вопрос.
Автор: delover
Дата сообщения: 25.12.2013 15:58
Может мне это и не нужно, сейчас, но самая первая картинка вызывает у меня просто восторг.
Автор: Aniskin
Дата сообщения: 25.12.2013 18:28
delover: Перефразируя Антона Павловича скажу, что у разработчика должно быть все прекрасно: и лицо, и иконки, и код, и мануалы.

Автор: delover
Дата сообщения: 25.12.2013 20:48
Aniskin
Я редко развожусь на рекламу, но извините, вызывает большой респект, я так не могу. Особенно иконки - ещё раз респект.
Автор: OberStaFF
Дата сообщения: 12.06.2016 12:59
Aniskin
Обновление можно ждать для Berlin 10.1? Или проект застыл?
Автор: Aniskin
Дата сообщения: 12.06.2016 13:47
OberStaFF
Можно, но не скоро. Сейчас у меня есть более приоритетные задачи.

Страницы: 1

Предыдущая тема: PHP: помогите деобфусцировать


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.