我制作了一个IE工具条.
现在必须 IE-查看-工具栏 钩选才能显示.
我想如何才能注册组件后 立刻能显示呢?
本人比较菜 希望大家能提供详细代码,分不够可以再加.我是参考CSDN上的例子写的.
http://dev.csdn.net/develop/article/7/7099.shtm
代码我一点都没有改,只为学习.
现在希望高手大哥们能给段代码 告诉我应该放在这个例子的什么位置...我搜索的答案大致感觉是要控制 IE的BHO 信息,但实在是不知如何继续....
现在必须 IE-查看-工具栏 钩选才能显示.
我想如何才能注册组件后 立刻能显示呢?
本人比较菜 希望大家能提供详细代码,分不够可以再加.我是参考CSDN上的例子写的.
http://dev.csdn.net/develop/article/7/7099.shtm
代码我一点都没有改,只为学习.
现在希望高手大哥们能给段代码 告诉我应该放在这个例子的什么位置...我搜索的答案大致感觉是要控制 IE的BHO 信息,但实在是不知如何继续....
标准的,也是最好的办法是在你的工具条之外再实现一个Browser Helper Object(BHO),比如下面的CShowBarObj,并在IObjectWithSite::SetSite方法中调用IWebBrowser2的ShowBrowserBar函数来显示你的工具条。VC中的例子如下:STDMETHODIMP CShowBarObj::SetSite(IUnknown *pUnkSite)
{
if (NULL != pUnkSite)
{
IWebBrowser2 *pBrowser = NULL;
// Ensure that our site is an browser window
HRESULT hr = pUnkSite->QueryInterface(IID_IWebBrowser2, (void **) &pBrowser);
if (SUCCEEDED(hr))
{
// Display the band object (the Search bar in this case)
VARIANT vtBandGUID, vtShow;
vtBandGUID.vt = VT_BSTR;
//把这里的CLSID换成你的工具条CLSID
vtBandGUID.bstrVal = SysAllocString(OLESTR("{30D02401-6A81-11D0-8274-00C04FD5AE38}"));
vtShow.vt = VT_BOOL;
vtShow.boolVal = true;
pBrowser->ShowBrowserBar(&vtBandGUID, &vtShow, 0);
SysFreeString(vtBandGUID.bstrVal);
pBrowser->Release();
}
}
return S_OK;
}
我根本转不成 DELPHI...
function TGetMailBand.SetSite(const pUnkSite: IUnknown):HResult;stdcall;
这个函数里,加下面这句
(pUnkSite as IWebbrowser2).ShowBrowserBar(Class_GetMailBand, True, 0); 放在
Result := S_OK;
end;
前面应该就可了 如果编译有问题,就 uses Shdocvw, ActiveX;
[Fatal Error] MailIEBand.dpr(7): Could not compile used unit 'BandUnit.pas'试了一下 还是有这个提示啊....USES 已经照做了...
var
vaClsID, vaEnabled, vaDummy: Olevariant;
begin ...
vaCLSID := Class_GetMailBand;
vaEnabled := True;
vaDummy := 0;
(pUnkSite as IWebbrowser2).ShowBrowserBar(vaCLSID, vaEnabled, vaDummy);
Result := S_OK;
end;