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

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

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

в Windows Explorer.

Мой вопрос:

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

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

Благодарю.

1 ответ

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

БХО не может добавить настольную ленту. Если вы хотите начать программирование BHO и настольных систем, посмотрите статью Пола ДиЛаскья "Моя группа - ваша группа" в выпуске MSJ за ноябрь 1999 года. В MSDN есть еще одна статья "Создание вспомогательных объектов браузера с помощью Visual Studio 2005" для BHO. По сути, вам нужно обрабатывать события DocumentComplete и BeforeNavigate и быть осторожным, чтобы не получить доступ к представлению папки, когда документ не готов. Вы можете использовать любой метод связи, который вы считаете подходящим, между вашим BHO и настольной панелью, такой как скрытое окно со специальным классом окна, статическая переменная, если они находятся в одной и той же dll, общая память, именованный канал и т. Д.

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

Другие вопросы по тегам