http://www.itzhe.cn/article/20080528/146926.html
Webbrowser控件 怎么样禁用ActiveX 在VC对话框程序中,加入一WebBrowser Control, 相当于自己写了一个基于IE内核的浏览器。问题是:在Navigate一个网页后,怎么让它不加载ActiveX并且不运行javascript(禁用js引擎)。
本人研究了好多关于IE内核编程的东西,但还是没有找到解决方案。欢迎大家一块来讨论这个问题。
网友回复:处理IDocHostUIHandler::GetHostInfo(DOCHOSTUIINFO *pInfo);
DOCHOSTUIINFO的dwFlags中包含DOCHOSTUIFLAG_DISABLE_SCRIPT_INACTIVE
MSHTML does not execute any script until fully activated. This flag isused to postpone script execution until the host is active and,therefore,
ready for script to be executed.
再加上DLCTL_NO_DLACTIVEXCTLS 和 DLCTL_NO_RUNACTIVEXCTLS可禁止加载ActiveX。
http://www.vckbase.com/document/viewdoc/?id=1486
看这篇文章
STDMETHODIMP CCustomControlSite::XInternetSecurityManager
::ProcessUrlAction(
LPCWSTR
pwszUrl,
DWORD
dwAction,
BYTE
__RPC_FAR *pPolicy,
DWORD
cbPolicy,
BYTE
__RPC_FAR *pContext,
DWORD
cbContext,
DWORD
dwFlags,
DWORD
dwReserved)
{
METHOD_PROLOGUE(CCustomControlSite, InternetSecurityManager)
DWORD
dwPolicy=URLPOLICY_ALLOW;
BOOL
bNoActiveX=FALSE;
BOOL
bNoJava=TRUE;
BOOL
bNoScript=FALSE;
BOOL
bCrossData=TRUE;
if
(dwAction <= URLACTION_ACTIVEX_MAX && dwAction >= URLACTION_ACTIVEX_MIN)
dwPolicy = bNoActiveX ? URLPOLICY_DISALLOW : URLPOLICY_ALLOW;
else
if
((dwAction <= URLACTION_JAVA_MAX && dwAction >= URLACTION_JAVA_MIN) ||
URLACTION_HTML_JAVA_RUN == dwAction)
if
(bNoJava)
dwPolicy = URLPOLICY_JAVA_PROHIBIT;
else
return
INET_E_DEFAULT_ACTION;
else
if
(dwAction <= URLACTION_SCRIPT_MAX && dwAction >= URLACTION_SCRIPT_MIN)
dwPolicy = bNoScript ? URLPOLICY_DISALLOW : URLPOLICY_ALLOW;
else
if
(URLACTION_CROSS_DOMAIN_DATA == dwAction)
dwPolicy = bCrossData ? URLPOLICY_ALLOW : URLPOLICY_DISALLOW;
else
return
INET_E_DEFAULT_ACTION;
if
( cbPolicy >=
sizeof
(
DWORD
))
{
*(
DWORD
*) pPolicy = dwPolicy;
return
S_OK;
}
else
{
return
S_FALSE;
}
}
WebBrowser屏蔽安装插件弹出的安全警告窗口
在写自定义的IWebBrowser2接口浏览器的时候,禁止了他加载Flash控件,它弹出了如下的安全窗口,怎样才能够屏蔽掉这个插件安装的安全警告窗口?要实现哪个COM接口呢?
启用
SetKeyValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3", "1200", "0", REG_DWORD
禁用
SetKeyValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3", "1200", "3", REG_DWORD
参数解释:
1.“Zones\3"中的3是指互联网。
2.”1200“是指ActiveX,其他值参考http://www.fisheep.com/index.php/archives/20/
屏蔽原理:在第一次载入ActiveX控件的页面时,如果注册表参数为允许执行则以后都允许,反之亦然。设置注册表为禁止后载入页面,最后恢复设置,这样不影响其他程序使用ActiveX组件。
这种状态一直到程序关闭。只要VB未重新开启,这个有效性就一直保存
SetKeyValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3", "1200", "3", REG_DWORD
WebBrowser1.Navigate "about:blank"
Do While (WebBrowser1.Busy = True)
DoEvents
Loop
WebBrowser1.Document.Open
WebBrowser1.Document.writeln ""
WebBrowser1.Document.Close
SetKeyValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3", "1200", "0", REG_DWORD