Расширение проводника Windows с помощью BHO

Я пытаюсь расширить проводник Windows (НЕ IE) с настраиваемой панели в C ++, которая должна выглядеть следующим образом:

введите описание изображения здесь

и вот похожий вопрос, который я нашел (в C #):
Подобный вопрос

Вопрос о C # и уже получил ответ.

Но я сам нахожу ответ слишком кратким, чтобы я мог следовать ему, вот что я получил:

  1. Я должен реализовать объект BHO
  2. объект BHO должен реализовывать IObjectWithSite и IDockingWindow
  3. В методе SetSite вызовите QueryInterface чтобы получить указатель поставщика услуг, затем позвоните QueryService чтобы получить указатель на оконную раму стыковки, затем, наконец, вызовите AddToolBar добавить мое настроенное окно. и вот где я заблудился

и мои вопросы:

  1. в какое время я должен создать свое собственное окно? во время инициализации объекта?
  2. Я думаю, что я должен получить дескриптор родительского окна (в моем случае я думаю, что это должен быть дескриптор проводника окон), прежде чем я смогу создать свое собственное окно, которое будет его дочерним элементом, где я могу получить этот дескриптор? с указателем стыковки оконной рамы?
  3. Как мне зарегистрировать мою DLL? Я прочитал некоторые примеры кодов обработчиков предварительного просмотра, мы должны правильно зарегистрировать DLL, прежде чем она может быть вызвана системой, верно?

Я пытался воспроизвести то, что сказал подобный вопрос в течение нескольких дней, но пока не повезло.

Я действительно новичок в BHO и все такое, пожалуйста, помогите мне в этом, спасибо.

5

Решение

Для такого расширения Explorer я создаю 2 объекта. Сначала реализуется BHO (IDispatch и IObjectWithSite). Второй реализует IObjectWithSite, IOleWindow, IDockingWindow, IInputObject и IOleCommandTarget.

1) Логика показа вашего окна зависит от того, что вы хотите реализовать.

2) Родительское окно вы можете получить внутри Second.SetSite:

Site.QueryInterface(IDockingWindowSite, FDockingWindowSite);
FDockingWindowSite.GetWindow(FParent);

3) Просто зарегистрируйте свой BHO как стандартный BHO.

Мне потребовалось много времени, чтобы создать и отладить такое расширение. Если вы не являетесь экспертом в этой области, подумайте еще раз — вам действительно нужен этот функционал. Но если вы действительно решили, что вам нужно, попробуйте сначала создать и зарегистрировать простую BHO. И только когда BHO работает правильно, добавьте реализацию IDockingWindow.

1

Другие решения


По вопросам рекламы [email protected]