Как я могу добавить кнопку ко всем экземплярам проводника Windows?

Я пытаюсь добавить кнопку на одну из существующих панелей инструментов в любом экземпляре проводника Windows.

После долгих исследований я понял, что BHO (вспомогательные объекты браузера) - лучший способ зацепить

в проводник Windows.

У меня вопрос:

  1. Это правильный способ сделать это?
  2. В SetSite BHO я получаю comObject, который является окном проводника. Что теперь ?
  3. Если я могу получить hWnd окна проводника, могу ли я использовать Win API, чтобы добавить свою кнопку?

Обратите внимание, что я разрабатываю на C # для XP.

Спасибо.


person Shabi_669    schedule 16.11.2009    source источник


Ответы (1)


1 В до-XP вы можете добавлять пользовательские элементы в шаблон папки по умолчанию, потому что окно папки на самом деле является веб-страницей. В XP и более поздних версиях это уже не так. Deskband - это поддерживаемый способ расширения пользовательского интерфейса. 2 Сайт такой же. Вы даже можете утопить DWebBrowserEvents2, чтобы получать уведомления, когда представление папки готово. 3 использование оконных функций в проводнике не поддерживается. Поддерживаемый способ настройки проводника - создание полос рабочего стола. Теоретически это возможно, если у вас есть ресурс для тестирования вашего кода на каждой версии Windows Explorer, используемой вашей клиентской аудиторией, и если вы продолжаете проводить тестирование совместимости при выпуске каждой новой версии (или нового языка) explorer.exe.

BHO не может добавить рабочий стол. Если вы хотите начать программировать BHO и настольную музыку, посмотрите статью Пола Дилашиа «My Band is Your Band» в ноябрьском выпуске MSJ за 1999 год. В MSDN для BHO есть еще одна статья «Создание вспомогательных объектов браузера с помощью Visual Studio 2005». В основном вам нужно обрабатывать события DocumentComplete и BeforeNavigate и быть осторожными, чтобы не получить доступ к представлению папки, когда документ не готов. Вы можете использовать любой метод связи между вашим BHO и настольной полосой, который вы считаете подходящим, например, скрытое окно со специальным классом окна, статическая переменная, если они находятся в одной dll, общая память, именованный канал и т. Д.

Microsoft не поддерживает создание внутрипроцессных расширений в управляемом коде до .Net 4.0

person Sheng Jiang 蒋晟    schedule 17.11.2009
comment
Спасибо за ответ, Шэн, и я согласен, что функции Windows - плохой вариант. Чтобы прояснить, вы имеете в виду, что у меня должен быть BHO, который добавляет элемент управления полосой в проводник Windows? Мне кажется, это хорошо, но как? Еще раз спасибо. - person Shabi_669; 17.11.2009