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

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

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

Проводнику Windows.

Мой вопрос:

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

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

Спасибо.

1 Ответ

1 голос
/ 17 ноября 2009

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

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

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

...