查到了一些你们以前讨论的帖子,
也参考了一些国外的帖子
/*
看看你的控件再實現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希望各位高人讨论一下
给电提示帮助
非常感谢吧
也参考了一些国外的帖子
/*
看看你的控件再實現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希望各位高人讨论一下
给电提示帮助
非常感谢吧
不知道你处理了没有
http://topic.csdn.net/t/20041115/11/3553539.html
我已经处理了函数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;
*/不知道我得处理上是不是有问题?
这个地方的0x0100了
也就是那个DBIMF_BREAK
功能和GOOGLE那个查不多,VC代码。
[email protected]其实我其他的功能也写完了
就差这个自动显示了
^_^
希望大哥明示~~~~~~~~~小弟非常感谢~~~~~~~~~
最近基本都没有写Delphi,在忙出版的事情,排版都快把我弄死了。
其实看了各种方法。就针对在 SetSite里加入BHO来实现,我发现不能在第一次开启IE(也就是安装后显示工具栏)。发现在注册后,第一次启动IE,并不会引发 SetSite,只有在显示toolbar 后才触发。我不知道你们是怎么解决的。希望赐教 [email protected]
在IE启动时,是不会触发toolbar的相关事件。所以,我觉得在toolbar注册时应该做相关处理。
楼上的去者里下载注册看一下。
无论我怎么用 都是不能显示啊
我注册完了也是弹出一个IE窗口
但是就是没有toolbar出来啊我不能骗你的
~~~
回复人:ksaiy(阳光总在风雨后) ( 两星(中级)) 信誉:172 2006-3-17 17:07:05 得分:0
? 我大概的调试了一下,注册以后它会直接打开IE,然后IEToolbar就自动显示出来,下次再以后就和第一次打开的一样。
*/我得IE也能出来
但是就是没有Toolbar
回复人:ghyghost(爱国人士) ( 两星(中级)) 信誉:92 2006-03-17 17:48:00 得分:0
?
晕哟,这ksaiy还活着呢啊??暴汗。。楼主真是厉害,把这家伙也给引出来了。
*/没什么啦,ksaiy兄比较热心哦,所以就被我因出来了
其实都是一个人开发的
嘿嘿
昏了,代码和以前我写的那个差不多。
关键的地方我没有做任何修改我也不知道为什么我得机器就是不能显示
而且我也测试了其他的机器
也是不可以的另外我看了http://www.codeproject.com/shell/2find.asp
这是那个代码的创始人写的
里面说道了
Automatically open IE and visualize the toolbar during dll registration.但是我测试了很多很多机器
都是不可以的
具体什么原因我也不知道或者这样 我把我修改的程序给你发过去 你看看?
我在一台没有安装过这个Toolbar的机器测试
竟然可以显示出来
但是如果我卸载了再次安装就不能显示出来了但是我又在另外一台机器测试
发现又不行了我在第三台机器测试的时候出现一个BUG
to ksaiy:这个BUG不知道你碰到国没有
我把图片发到你的Email吧
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是不是表示你不能接受我得邮件了??
你下载以后注册了看没有?是否可以自动显示?
我已经使用你的那个代码进行重新修改了,现在已经实现基本上所有的功能了,就是不明白修改了什么地方,ksaiy给点提示 谢谢