2009-11-16 3 views
0

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

После долгих исследований я понял, что BHO (Browser Helper Objects) является лучшим способом для подключения

для Windows.

Мой вопрос:

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

Примечание: Я развиваюсь в C# для XP.

Спасибо.

ответ

1

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

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

Microsoft does not support creating In-Process extensions in managed code until .Net 4.0

+0

Спасибо за ответ Шэн, и я согласен, что функции окон - плохой путь. Просто, чтобы понять это, вы имеете в виду, что у меня должен быть BHO, который добавляет управление полосой в Windows Explorer? Звучит неплохо, но как? Еще раз спасибо. –

+0

Отредактировано сообщение –

Смежные вопросы