查到了一些你们以前讨论的帖子,
也参考了一些国外的帖子
/*
看看你的控件再實現IDeskband接口的GetBandInfo, 并且指定 DBIMF_BREAK, 試下, 應該可以解決{IDeskband}
function GetBandInfo(dwBandID, dwViewMode: DWORD; var pdbi: TDeskBandInfo):
HResult; stdcall;
(pdbi.dwModeFlags := DBIMF_BREAK;)
*/下面是国外的朋友的代码
/*
const char *ToolbarId = "{5F1ABCDB-A875-46c1-8345-B72A4567E486}";static void LaunchIE()
{
IWebBrowser2 *IE;
_variant_t vtClassId(ToolbarId);
_variant_t vtShow(true);
_variant_t vtEmpty;
HRESULT Result;Result = CoCreateInstance(CLSID_InternetExplorer,
NULL,
CLSCTX_LOCAL_SERVER,
IID_IWebBrowser2,
(LPVOID*) &IE);
if (FAILED(Result))
return;IE->ShowBrowserBar(&vtClassId, &vtShow, &vtEmpty);IE->GoHome();
IE->put_Visible(VARIANT_TRUE);IE->Release();
}
*/
因为我的开发环境是VC
所以你们说得那个DBIMF_BREAK = $0100;变量的问题我不存在
但是我还是无法自动显示我得Toolbar希望各位高人讨论一下
给电提示帮助
非常感谢吧

解决方案 »

  1.   

    关键就是显现那个IDeskband接口的GetBandInfo方法,,
    不知道你处理了没有
    http://topic.csdn.net/t/20041115/11/3553539.html
      

  2.   

    to aiirii:首先非常感谢你这么快就给我回复了,
    我已经处理了函数GetBandInfo了
    代码其实是别人的
    我贴到下面吧
    /*
       OSVERSIONINFOEX osvi;
       BOOL bOsVersionInfoEx;
       memset(&osvi, 0, sizeof(OSVERSIONINFOEX));
       osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
       if (!(bOsVersionInfoEx = GetVersionEx((OSVERSIONINFO*) &osvi)))
       {
          osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
          if (!GetVersionEx((OSVERSIONINFO*) &osvi)) 
          {
          }
       }  int add = 2;
      if(osvi.dwPlatformId==VER_PLATFORM_WIN32_NT && osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1)
        add = 8;  m_dwBandID = dwBandID;
    m_dwViewMode = dwViewMode; if (pdbi)                                
      {                                
    if (pdbi->dwMask & DBIM_MINSIZE)   
    {
          pdbi->ptMinSize.x = ww<2 ? GetSystemMetrics(SM_CXFULLSCREEN)-20 : m_wndToolBar.m_min_width;
    #ifdef _PROXY_CHANGE_TOOLBAR
          pdbi->ptMinSize.x = m_wndToolBar.m_min_width;
    #endif
          ww++;
    pdbi->ptMinSize.y = TB_HEIGHT; 
    #if defined(_ODBC_DIRECT)
    pdbi->ptMinSize.y = pdbi->ptMinSize.y*2 + 2 + add;
    #endif
        }                                  
    if (pdbi->dwMask & DBIM_MAXSIZE)
    {
    pdbi->ptMaxSize.x = 0; // ignored
    pdbi->ptMaxSize.y = -1; // width
    }
    if (pdbi->dwMask & DBIM_INTEGRAL)
    {
    pdbi->ptIntegral.x = 1; // ignored
    pdbi->ptIntegral.y = 1; // not sizeable
    }
    if (pdbi->dwMask & DBIM_ACTUAL)
    {
          pdbi->ptActual.x = m_wndToolBar.m_width; 
    pdbi->ptMinSize.y = TB_HEIGHT; 
    #if defined(_ODBC_DIRECT)
    pdbi->ptMinSize.y = pdbi->ptMinSize.y*2 + 2 + add; 
    #endif
    }
    if (pdbi->dwMask & DBIM_TITLE)
    {
    wcscpy(pdbi->wszTitle, TITLE_CPugiObj);
    }
    if (pdbi->dwMask & DBIM_BKCOLOR)
    {
    //Use the default background color by removing this flag.
    pdbi->dwMask &= ~DBIM_BKCOLOR;
    }
    if (pdbi->dwMask & DBIM_MODEFLAGS)
    { pdbi->dwModeFlags = 0x0100 | DBIMF_DEBOSSED |  0x0080 /*DBIMF_USECHEVRON*/;
    }
    }
    return S_OK;
       */不知道我得处理上是不是有问题?
      

  3.   

    我想比较关键的应该就是pdbi->dwModeFlags = 0x0100 | DBIMF_DEBOSSED | 0x0080 /*DBIMF_USECHEVRON*/;
    这个地方的0x0100了
    也就是那个DBIMF_BREAK
      

  4.   

    邮箱告诉我,我发给你
    功能和GOOGLE那个查不多,VC代码。
      

  5.   

    娃哈哈 太感谢你了
    [email protected]其实我其他的功能也写完了
    就差这个自动显示了
    ^_^
      

  6.   

    发过去了,收下看看,里面包含两个包,一个编译好的DLL,一个是源码包。
      

  7.   

    恩 非常谢谢 ksaiy大哥,我研究明白了再揭帖。
      

  8.   

    to ksaiy大哥:我也是那个source的,没有那个自动显示的功能啊?是不是需要修改什么地方啊?
    希望大哥明示~~~~~~~~~小弟非常感谢~~~~~~~~~
      

  9.   

    我大概的调试了一下,注册以后它会直接打开IE,然后IEToolbar就自动显示出来,下次再以后就和第一次打开的一样。
      

  10.   

    把编译好的那个包里的文件全部释放出来,不要只单释放dll出来,然后你在Regsvr32看。
      

  11.   

    晕哟,这ksaiy还活着呢啊??暴汗。。楼主真是厉害,把这家伙也给引出来了。
      

  12.   

    死了又活了。
    最近基本都没有写Delphi,在忙出版的事情,排版都快把我弄死了。
      

  13.   

    呵呵呵,大家好。我最近也遇到了启动IE时需要自动显示的问题。
    其实看了各种方法。就针对在 SetSite里加入BHO来实现,我发现不能在第一次开启IE(也就是安装后显示工具栏)。发现在注册后,第一次启动IE,并不会引发 SetSite,只有在显示toolbar 后才触发。我不知道你们是怎么解决的。希望赐教 [email protected]
      

  14.   

    还有一点。我觉得所有的IE工具栏,如果不在注册表里事先处理,
    在IE启动时,是不会触发toolbar的相关事件。所以,我觉得在toolbar注册时应该做相关处理。
      

  15.   

    http://pickup.mofile.com/0510505803910208
    楼上的去者里下载注册看一下。
      

  16.   

    to ksaiy:我的环境是 windowsxp sp2+ie6 sp1
    无论我怎么用 都是不能显示啊
    我注册完了也是弹出一个IE窗口
    但是就是没有toolbar出来啊我不能骗你的
    ~~~
      

  17.   

    /*
     回复人:ksaiy(阳光总在风雨后) ( 两星(中级)) 信誉:172  2006-3-17 17:07:05  得分:0
    ?  我大概的调试了一下,注册以后它会直接打开IE,然后IEToolbar就自动显示出来,下次再以后就和第一次打开的一样。
    */我得IE也能出来
    但是就是没有Toolbar
      

  18.   

    /*
       回复人:ghyghost(爱国人士) ( 两星(中级)) 信誉:92  2006-03-17 17:48:00  得分:0

    晕哟,这ksaiy还活着呢啊??暴汗。。楼主真是厉害,把这家伙也给引出来了。
    */没什么啦,ksaiy兄比较热心哦,所以就被我因出来了
      

  19.   

    我得实在codeproject下载的
    其实都是一个人开发的
    嘿嘿
      

  20.   

    我在VM下的XP SP2下测试了一把,可以直接显示出来。
    昏了,代码和以前我写的那个差不多。
      

  21.   

    那个代码我是在Codeproject上面下载来的
    关键的地方我没有做任何修改我也不知道为什么我得机器就是不能显示
    而且我也测试了其他的机器
    也是不可以的另外我看了http://www.codeproject.com/shell/2find.asp
    这是那个代码的创始人写的
    里面说道了
    Automatically open IE and visualize the toolbar during dll registration.但是我测试了很多很多机器 
    都是不可以的
    具体什么原因我也不知道或者这样 我把我修改的程序给你发过去 你看看?
      

  22.   

    问题比较奇怪,现在不知道究竟是什么问题了
    我在一台没有安装过这个Toolbar的机器测试
    竟然可以显示出来
    但是如果我卸载了再次安装就不能显示出来了但是我又在另外一台机器测试
    发现又不行了我在第三台机器测试的时候出现一个BUG
    to ksaiy:这个BUG不知道你碰到国没有
    我把图片发到你的Email吧
      

  23.   

    还有给你的Mail发送右键 竟然出现这个东西This is an automatically generated Delivery Status NotificationDelivery to the following recipient failed permanently:    [email protected] details of permanent failure:
    PERM_FAILURE: SMTP Error (state 9): 554 Please visit http://antispam.sina.com.cn/denyip.php?IP=64.233.166.177 (#5.7.1)
    那个denyip.php是不是表示你不能接受我得邮件了??
      

  24.   

    我装了一大堆IE ToolBar但还是可以装上啊,卸了也可以装上,好了我们还是在MSN说这个问题,在这里说太慢.
      

  25.   

    交流一下.我的MSN: [email protected]
      

  26.   

    to:SqualLee(Lee)
    你下载以后注册了看没有?是否可以自动显示?
      

  27.   

    to ksaiy:你好:晕,我看了那个地方下载的程序了,竟然能够成功注册,就是不明白修改了什么地方,能否指教一下~~~
              我已经使用你的那个代码进行重新修改了,现在已经实现基本上所有的功能了,就是不明白修改了什么地方,ksaiy给点提示 谢谢
      

  28.   

    to ksaiy:谢谢了,下载后可以自动显示~现在代码还在研究中,对C不是很熟悉,还得花点时间消化~ :) 谢谢了~~