DuiLib : 修改内嵌网页的安全选项

来源:互联网 发布:专业数据分析团队介绍 编辑:程序博客网 时间:2024/05/17 05:03

程序中内嵌网页弹出出现了"停止运行此脚本么?" 如果选择否,  程序就挂掉了, 再没有响应.

同事找到一个资料 : http://blog.csdn.net/breaksoftware/article/details/7104632

主要是修改2个函数,  原始资料是MFC的. 换到DuiLib中也行.


3rd\DuiLib\Control\UIWebBrowser.h

#ifndef __UIWEBBROWSER_H__#define __UIWEBBROWSER_H__#pragma once#include "Utils/WebBrowserEventHandler.h"#include <ExDisp.h>namespace DuiLib{class UILIB_API CWebBrowserUI: public CActiveXUI, public IDocHostUIHandler, public IServiceProvider, public IOleCommandTarget, public IDispatch, public ITranslateAccelerator{public:/// 构造函数CWebBrowserUI();virtual ~CWebBrowserUI();// ...// IServiceProviderSTDMETHOD(QueryService)(REFGUID guidService, REFIID riid, void** ppvObject);        STDMETHOD (ProcessUrlAction)(               /* [in] */ LPCWSTR pwszUrl,              /* [in] */ DWORD dwAction,              /* [size_is][out] */ BYTE *pPolicy,              /* [in] */ DWORD cbPolicy,              /* [in] */ BYTE *pContext,              /* [in] */ DWORD cbContext,              /* [in] */ DWORD dwFlags,              /* [in] */ DWORD dwReserved);// ...<pre name="code" class="cpp">};} // namespace DuiLib#endif // __UIWEBBROWSER_H__

// 3rd\DuiLib\Control\UIWebBrowser.cpp

STDMETHODIMP DuiLib::CWebBrowserUI::ProcessUrlAction(    /* [in] */ LPCWSTR pwszUrl,    /* [in] */ DWORD dwAction,    /* [size_is][out] */ BYTE *pPolicy,    /* [in] */ DWORD cbPolicy,    /* [in] */ BYTE *pContext,    /* [in] */ DWORD cbContext,    /* [in] */ DWORD dwFlags,    /* [in] */ DWORD dwReserved){    // 脚本禁用的关键    DWORD dwPolicy = URLPOLICY_ALLOW;    // !! If the compiler can't find URLACTION_CROSS_DOMAIN_DATA, make sure you are building with    // !! the latest version of the IE headers -- URLMON.H specifically -- from MSDN Downloads for the     // !! Web Workshop or the Platform SDK    if ((dwAction >= URLACTION_SCRIPT_MIN)         && (dwAction <= URLACTION_SCRIPT_MAX))    {        dwPolicy = URLPOLICY_ALLOW;    }    else        return INET_E_DEFAULT_ACTION;    if ( cbPolicy >= sizeof (DWORD))    {        *(DWORD*) pPolicy = dwPolicy;        return S_OK;    }     else     {        return S_FALSE;    }}STDMETHODIMP DuiLib::CWebBrowserUI::QueryService( REFGUID guidService, REFIID riid, void** ppvObject ){HRESULT hr = E_NOINTERFACE;*ppvObject = NULL;if ( guidService == SID_SDownloadManager && riid == IID_IDownloadManager){*ppvObject = this;return S_OK;}return hr;}

因为弹出""停止运行此脚本么?"不是很频繁, 所以暂时还没有看到修改内嵌网页安全选项后的效果 ~

                                             
0 0
原创粉丝点击