用BHO扩展Windows资源pipe理器

我正在试图扩展在C ++中的定制面板whindows资源pipe理器(不IE),应该看起来像这样:

在这里输入图像说明

这里有一个类似的问题,我发现(在C#中): 类似的问题

问题是C#已经得到了答案。

但是我自己发现答案有点太简单了,我只能这样做:

  1. 我应该实现一个BHO对象
  2. BHO对象应该实现IObjectWithSite和IDockingWindow
  3. 在SetSite方法中,调用QueryInterface获取服务提供者的指针,然后调用QueryService获取Docking窗口的指针,最后调用AddToolBar添加我的自定义窗口。 这是我迷路的地方

我的问题是:

  1. 我应该在什么时候创build自定义窗口? 在对象的初始化过程中?
  2. 我想我应该得到一个父窗口的句柄(在我的情况下,我认为它应该是Windows资源pipe理器的句柄),然后才能创build自己的窗口,这将是它的孩子,我在哪里可以得到这个句柄? 与对接窗口框架的指针?
  3. 我应该如何注册我的DLL? 我读了预览处理程序的一些示例代码,我们必须正确注册dll才能被系统调用吗?

我试图重现类似的问题说了几天,但现在没有运气。

我真的是新来的BHO和所有这些东西,请帮助我出于此,谢谢。

对于这样的资源管理器扩展我创建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实现。