- 浏览: 3472032 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wanglf1207:
EJB的确是个不错的产品,只是因为用起来有点门槛,招来太多人吐 ...
weblogic-ejb-jar.xml的元素解析 -
qwfys200:
总结的不错。
Spring Web Flow 2.0 入门 -
u011577913:
u011577913 写道也能给我发一份翻译文档? 邮件437 ...
Hazelcast 参考文档-4 -
u011577913:
也能给我发一份翻译文档?
Hazelcast 参考文档-4 -
songzj001:
DbUnit入门实战
如果采用VC++开发的ActiveX,那么第一次运行的时候,IE中就会提示,“在此页上的ActiveX控件和本页上的其他部分
的交互可能不安全,你想允许这种交互吗?”在网上找了很多资料,原理介绍的多,但是真正如何做,介绍的比较少,因此这里把实际的步骤一步一步的记录下来
了,供大家参考。
1.1 去除ActiveX访问时的安全提示
当ActiveX第一次被访问时,会出现如下提示框:
这是IE浏览器的安全机制造成的,我们可以采用下面的步骤来去除这个提示信息:
1.1.1 在CDemoCtl的头文件.h中增加对objsave的引用
#include <objsafe.h>
1.1.2 在其protected声明区增加如下内容:
//去掉安全警告 BEGIN
DECLARE_INTERFACE_MAP()
BEGIN_INTERFACE_PART(ObjectSafety, IObjectSafety)
STDMETHOD(GetInterfaceSafetyOptions)(REFIID riid, DWORD __RPC_FAR *pdwSupportedOptions, DWORD __RPC_FAR *pdwEnabledOptions);
STDMETHOD(SetInterfaceSafetyOptions)(REFIID riid, DWORD dwOptionSetMask, DWORD dwEnabledOptions);
END_INTERFACE_PART(ObjectSafety)
//去掉安全警告 END
1.1.3 在CDemoCtl的实现类.cpp的IMPLEMENT_DYNCREATE(CActivexFirstCtrl, COleControl)这一行后增加如下内容:
//去掉安全警告 BEGIN
BEGIN_INTERFACE_MAP(CDemoCtl, COleControl)
INTERFACE_PART(CDemoCtl, IID_IObjectSafety, ObjectSafety)
END_INTERFACE_MAP()
// Implementation of IObjectSafety
STDMETHODIMP CDemoCtl::XObjectSafety::GetInterfaceSafetyOptions(
REFIID riid,
DWORD __RPC_FAR *pdwSupportedOptions,
DWORD __RPC_FAR *pdwEnabledOptions)
{
METHOD_PROLOGUE_EX(CDemoCtl, ObjectSafety)
if (!pdwSupportedOptions || !pdwEnabledOptions)
{
return E_POINTER;
}
*pdwSupportedOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA;
*pdwEnabledOptions = 0;
if (NULL == pThis->GetInterface(&riid))
{
TRACE("Requested interface is not supported.\n");
return E_NOINTERFACE;
}
// What interface is being checked out anyhow?
OLECHAR szGUID[39];
int i = StringFromGUID2(riid, szGUID, 39);
if (riid == IID_IDispatch)
{
// Client wants to know if object is safe for scripting
*pdwEnabledOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER;
return S_OK;
}
else if (riid == IID_IPersistPropertyBag
|| riid == IID_IPersistStreamInit
|| riid == IID_IPersistStorage
|| riid == IID_IPersistMemory)
{
// Those are the persistence interfaces COleControl derived controls support
// as indicated in AFXCTL.H
// Client wants to know if object is safe for initializing from persistent data
*pdwEnabledOptions = INTERFACESAFE_FOR_UNTRUSTED_DATA;
return S_OK;
}
else
{
// Find out what interface this is, and decide what options to enable
TRACE("We didn"t account for the safety of this interface, and it"s one we support...\n");
return E_NOINTERFACE;
}
}
STDMETHODIMP CDemoCtl::XObjectSafety::SetInterfaceSafetyOptions(
REFIID riid,
DWORD dwOptionSetMask,
DWORD dwEnabledOptions)
{
METHOD_PROLOGUE_EX(CDemoCtl, ObjectSafety)
OLECHAR szGUID[39];
// What is this interface anyway?
// We can do a quick lookup in the registry under HKEY_CLASSES_ROOT\Interface
int i = StringFromGUID2(riid, szGUID, 39);
if (0 == dwOptionSetMask && 0 == dwEnabledOptions)
{
// the control certainly supports NO requests through the specified interface
// so it"s safe to return S_OK even if the interface isn"t supported.
return S_OK;
}
// Do we support the specified interface?
if (NULL == pThis->GetInterface(&riid))
{
TRACE1("%s is not support.\n", szGUID);
return E_FAIL;
}
if (riid == IID_IDispatch)
{
TRACE("Client asking if it"s safe to call through IDispatch.\n");
TRACE("In other words, is the control safe for scripting?\n");
if (INTERFACESAFE_FOR_UNTRUSTED_CALLER == dwOptionSetMask && INTERFACESAFE_FOR_UNTRUSTED_CALLER == dwEnabledOptions)
{
return S_OK;
}
else
{
return E_FAIL;
}
}
else if (riid == IID_IPersistPropertyBag
|| riid == IID_IPersistStreamInit
|| riid == IID_IPersistStorage
|| riid == IID_IPersistMemory)
{
TRACE("Client asking if it"s safe to call through IPersist*.\n");
TRACE("In other words, is the control safe for initializing from persistent data?\n");
if (INTERFACESAFE_FOR_UNTRUSTED_DATA == dwOptionSetMask && INTERFACESAFE_FOR_UNTRUSTED_DATA == dwEnabledOptions)
{
return NOERROR;
}
else
{
return E_FAIL;
}
}
else
{
TRACE1("We didn"t account for the safety of %s, and it"s one we support...\n", szGUID);
return E_FAIL;
}
}
STDMETHODIMP_(ULONG) CDemoCtl::XObjectSafety::AddRef()
{
METHOD_PROLOGUE_EX_(CDemoCtl, ObjectSafety)
return (ULONG)pThis->ExternalAddRef();
}
STDMETHODIMP_(ULONG) CDemoCtl::XObjectSafety::Release()
{
METHOD_PROLOGUE_EX_(CDemoCtl, ObjectSafety)
return (ULONG)pThis->ExternalRelease();
}
STDMETHODIMP CDemoCtl::XObjectSafety::QueryInterface(
REFIID iid, LPVOID* ppvObj)
{
METHOD_PROLOGUE_EX_(CDemoCtl, ObjectSafety)
return (HRESULT)pThis->ExternalQueryInterface(&iid, ppvObj);
}
//去掉安全警告 END
发表评论
-
js压缩工具(转载)
2012-06-07 11:58 9466怎么压缩Js?为什么要压缩Javascript? Javasc ... -
maven常见问题问答
2012-05-05 11:34 88641.前言 Maven,发音是[`meivin ... -
Eclipse Indigo - Cannot install Android ADT Plugin
2012-02-29 01:17 3836When I try to install the And ... -
Eclipse Indigo - Cannot install Android ADT Plugin
2012-02-29 01:13 1939When I try to install the And ... -
使用iconv进行内码转换(Big5->GB2312)
2012-02-26 00:56 3384i conv 是一个通过unicode 作为中间码 ... -
Enterprise Architect's Code Template Syntax
2011-12-13 22:58 1982Code Templates are written as ... -
Enterprise Architect's Engineering Code Template Framework Code Templates
2011-12-13 22:57 1755The Code Template Framework c ... -
ActiveX控件在签名以后,仍然被IE浏览器默认安全级阻止而无法安装。
2011-11-18 08:56 5391使用代码签名证书签名后的控件在运行时报“Internet ... -
关于IObjectSafety和ActiveX组件的脚本安全
2011-11-17 19:19 3086都说ActiveX 危险,那么 ... -
如何编写 INF 文件
2011-11-16 14:31 2128INF文件全称Information File文件,是Wino ... -
如何在web上实现对另一个应用程序的键盘输入,就像vb中的sendkey
2011-11-16 10:49 3495用 set WshShell = CreateOb ... -
MINGW GCC 4.3.0 安装与配置(解决CREATEPROCESS问题)
2011-07-28 23:53 4663首先,下载Mingw TDM 4.3.0版本http:// ... -
“没有找到MSVCP90D.dll”的解决办法
2011-04-02 00:21 4672出现这个bug的缘故是 ... -
DSO开发指南晋级(APACHE2.0 MOD 模块开发)
2010-09-23 04:23 2276APACHE2.0 MOD 模块开发 STEP ... -
ubuntu 7.10里装apxs2
2010-09-23 03:43 1945install apache2-prefork-dev ... -
使用 cURL 和 libcurl 通过 Internet 进行对话
2010-02-28 14:41 3590cURL 是一个命令行工具,可以对文件传输使用许多协议, ... -
codeblocks中plugin的实现
2010-02-16 00:47 3283快乐虾 http://blog.csdn.net/lig ... -
Ubuntu 下安装 Code::Blocks
2010-02-15 23:41 11980在Linux环境下,就不同 ... -
C/C++ IDE Code::Blocks安装过程
2010-02-15 23:27 54541.简介 Code::Blocks,有时 ... -
CodeLite可以媲美Code::Blocks
2010-02-15 21:27 41660CodeLite简单就是为wxWidgets/wxFormBu ...
相关推荐
在此页面上的activex控件和本页上的其他控件的交互可能不安全
在此页面上的Activex控件和本页上的其他部分及交互可能不安全解决办法,步骤清晰,按步骤操作即可。
ActiveX组件与JavaScript交互ActiveX组件与JavaScript交互ActiveX组件与JavaScript交互
c# 编写activex控件 并与网页交互,传递数据给网页,调用网页方法 例子 c# 编写activex控件 并与网页交互,传递数据给网页,调用网页方法 例子
要实现Firefox对ActiveX控件的支持,必须解决四个问题,包括如何创建和初始 化控件对象,如何在Firefox浏览器中显示和现场激活控件,如何使JavaScript能访问控 件的属性和方法以及如何捕获控件事件并将其转发给...
Activex控件签名工具, 微软提供了两套签名工具, 1)signcode.exe, 从1998年开始使用,随.NET Framework SDK发布。 signcode.exe 数字签名工具 makecert.exe 创建数字证书 cert2spc.exe 将数字证书转化为软件...
在我的上一篇blog中,已经实现了一个最基本的ActiveX控件。当然,我们编写的任务还没有完成。首先,我们先尝试实现和JS的交互能力。 我们在Demo中加入ShowMessage方法: public void ShowMessage(string...
Office ActiveX 控件让你轻松显示和编辑 Office 文档,只需要简单拖曳 Office ActiveX 到你的窗体,就立即使你的程序拥有 Office 功能。利用它你可以与 Word,Excel,PowerPoint,Visio,Project 等 Office 应用程序...
自己写的activex控件总是提示"在此页上的activex控件和本页上其他部分的交互可能不安全,你想允许这种交互吗?" . 比较烦人,而且提示完之后ie就死了. 在网上搜了好久终于找到了解决办法,就是网上说的比较多的那种...
ActiveX 控件以前也叫做 OLE 控件或 OCX 控件,它是一些软件组件或对象,可以将其 插入到 WEB 网页或其它应用程序中。使用 ActiveX 插件,可以轻松方便的在 Web 页中插 入多媒体效果、交互式对象以及复杂程序等等。 ...
AddFlow ActiveX控件 是一种能让你快速生成流程图的应用软件的控件。图标的每一个特征对象都是有用的,如独特的颜色、字体、形状、格式、图画、文本等等。当移动时节点是持续连接的。 或者是交互式地 或者是标题...
AmTapi ActiveX控件 是一个兼容TAPI的电话控件,TAPI是电话学API(Telephony API),由Intel和Microsoft共同开发,是32位Windows版本标准。TAPI能在一个广泛的电话硬件平台上实现彼此之间的电话设备共享,提供...
<br> Vector Graphics ActiveX控件主要特色: 简单易用 免费非经营使用 用硬件加速来加速最高可视化速度 可以在图像对象和存储在任何地方的外部数据建立连接 支持高速和高质量rendering光栅 可以导出.BMP, .JPG,...
<br> 用NCTDialogicVoice ActiveX控件,你可以创建各种软件包括: 交互式语音响应 语音邮件 Outbound Calling 还有其它... NCTDialogicVoice ActiveX控件主要特色 支持模拟和数字Dialogic语音板 支持Microsoft ...
ActiveX控件与服务器端对象级交互的探讨和应用.pdf
ActiveX控件以前也叫做OLE控件或OCX控件,它是一些软件组件或对象,可以将其插入到WEB网页或其它应用程序中。使用ActiveX插件,可以轻松方便的在 Web页中插入多媒体效果、交互式对象以及复杂程序等等。 通常使用...
主要介绍了ActiveX控件如何与Javascript进行交互,需要的朋友可以参考下
ActiveX 控件以前也叫做 OLE 控件或 OCX 控件,它是一些软件组件或对象,可以将其 插入到 WEB 网页或其它应用程序中。使用 ActiveX 插件,可以轻松方便的在 Web 页中插 入多媒体效果、交互式对象以及复杂程序等等...
如何在网页上使用 vb6 制作的 ActiveX 控件?