- 浏览: 3502497 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 9535怎么压缩Js?为什么要压缩Javascript? Javasc ... -
maven常见问题问答
2012-05-05 11:34 89411.前言 Maven,发音是[`meivin ... -
Eclipse Indigo - Cannot install Android ADT Plugin
2012-02-29 01:17 3883When I try to install the And ... -
Eclipse Indigo - Cannot install Android ADT Plugin
2012-02-29 01:13 1988When I try to install the And ... -
使用iconv进行内码转换(Big5->GB2312)
2012-02-26 00:56 3501i conv 是一个通过unicode 作为中间码 ... -
Enterprise Architect's Code Template Syntax
2011-12-13 22:58 2018Code Templates are written as ... -
Enterprise Architect's Engineering Code Template Framework Code Templates
2011-12-13 22:57 1783The Code Template Framework c ... -
ActiveX控件在签名以后,仍然被IE浏览器默认安全级阻止而无法安装。
2011-11-18 08:56 5439使用代码签名证书签名后的控件在运行时报“Internet ... -
关于IObjectSafety和ActiveX组件的脚本安全
2011-11-17 19:19 3120都说ActiveX 危险,那么 ... -
如何编写 INF 文件
2011-11-16 14:31 2183INF文件全称Information File文件,是Wino ... -
如何在web上实现对另一个应用程序的键盘输入,就像vb中的sendkey
2011-11-16 10:49 3540用 set WshShell = CreateOb ... -
MINGW GCC 4.3.0 安装与配置(解决CREATEPROCESS问题)
2011-07-28 23:53 4708首先,下载Mingw TDM 4.3.0版本http:// ... -
“没有找到MSVCP90D.dll”的解决办法
2011-04-02 00:21 4711出现这个bug的缘故是 ... -
DSO开发指南晋级(APACHE2.0 MOD 模块开发)
2010-09-23 04:23 2350APACHE2.0 MOD 模块开发 STEP ... -
ubuntu 7.10里装apxs2
2010-09-23 03:43 1980install apache2-prefork-dev ... -
使用 cURL 和 libcurl 通过 Internet 进行对话
2010-02-28 14:41 3652cURL 是一个命令行工具,可以对文件传输使用许多协议, ... -
codeblocks中plugin的实现
2010-02-16 00:47 3318快乐虾 http://blog.csdn.net/lig ... -
Ubuntu 下安装 Code::Blocks
2010-02-15 23:41 12033在Linux环境下,就不同 ... -
C/C++ IDE Code::Blocks安装过程
2010-02-15 23:27 55331.简介 Code::Blocks,有时 ... -
CodeLite可以媲美Code::Blocks
2010-02-15 21:27 41696CodeLite简单就是为wxWidgets/wxFormBu ...
相关推荐
标题与描述中提到的知识点是关于ActiveX控件在网页上的安全交互问题。这涉及到浏览器安全、ActiveX技术以及跨控件通信等多个方面。以下是对这些知识点的详细解析: ### ActiveX控件简介 ActiveX控件是一种由...
在此页面上的Activex控件和本页上的其他部分及交互可能不安全解决办法,步骤清晰,按步骤操作即可。
### ActiveX组件与JavaScript交互详解 #### 一、概述 ActiveX组件是一种可以在网页或桌面应用程序中运行的小型可执行程序,它支持多种语言编写,包括C++等。JavaScript是广泛应用于网页开发的一种脚本语言。本文将...
在本教程中,我们将探讨如何使用C#语言编写ActiveX控件,并实现与网页的交互,包括如何传递数据给网页以及如何调用网页中的方法。 一、ActiveX控件基础 ActiveX是微软推出的一种组件对象模型(COM),它允许开发者...
在IT领域,ActiveX控件是一种由微软开发的技术,它允许开发者创建交互式的网页和应用程序。ActiveX控件是基于COM(Component Object Model)组件模型的,这些控件可以在Internet Explorer浏览器中运行,提供诸如...
在描述中提到的"不弹出警告的ActiveX控件"是指一种特殊设计的控件,它可以在运行时避免向用户显示通常与安全相关的警告对话框。这种控件对于开发人员来说具有一定的价值,因为它可以提供更流畅的用户体验,同时...
在IT领域,ActiveX控件是微软开发的一种技术,它允许开发者创建可以在Web浏览器或其他支持ActiveX的应用程序中运行的交互式对象。ActiveX控件是基于组件对象模型(Component Object Model, COM)的,可以提供丰富的...
在互联网早期,ActiveX控件是Microsoft Internet Explorer(IE)浏览器中一种重要的技术,用于提供丰富的交互性和功能扩展。ActiveX控件是由软件开发者创建的小型应用程序,可以在网页上运行,为用户提供额外的功能...
在IT领域,ActiveX控件和VC++编程是两个重要的概念,它们经常结合在一起用于创建交互式的Windows应用程序。本文将深入探讨这两个主题以及如何在VC++环境中开发和使用ActiveX控件。 首先,ActiveX控件是Microsoft...
在本案例中,这个控件可能是为了在用户的计算机上实现与大华摄像头的直接交互,例如进行实时视频预览、录像或者控制摄像头的某些功能。 ActiveX控件的核心特性包括: 1. **交互性**:控件可以与用户界面进行交互,...
在IT行业中,ActiveX控件是一种古老的但仍然在某些场景下使用的技术,它允许开发者创建可以在Web页面上运行的小型应用程序或组件。ActiveX技术基于COM(Component Object Model)架构,通常由VB(Visual Basic)或...
在MATLAB图形用户界面(GUI)设计中使用...整个文档的目的是为了指导开发者如何在MATLAB中使用ActiveX控件来增强图形用户界面的设计和功能实现,使得MATLAB开发的应用程序可以更好地与Windows环境和第三方组件交互。
ActiveX是微软在Internet Explorer浏览器和其他Windows应用程序中使用的一种技术,它允许开发人员创建交互式和动态的Web内容,例如插件、控件和应用程序。然而,随着时间的推移,这些控件可能会积累,导致系统性能...
3. **示例**:在提供的"callJS"文件中,可能包含了一个示例,演示如何从ActiveX控件调用JavaScript函数,或者反之,这在需要利用ActiveX的强大功能但又希望在网页上保持用户友好交互时非常有用。 **应用场景**: - ...
ActiveX控件是一种Windows平台上的组件技术,允许不同应用程序间进行交互。这些控件可以嵌入到HTML页面中,以增强网页的功能性和互动性。然而,由于Java和ActiveX控件分属不同的平台和技术体系,实现两者间的交互...
ActiveX控件是微软在Internet Explorer浏览器中引入的一种技术,用于增强网页的交互性和功能。在Web开发的早期,ActiveX被广泛应用于提供多媒体内容、软件下载、在线应用程序以及各种定制的用户界面元素。本文将深入...
ActiveX控件是一种在Windows平台上广泛使用的组件技术,它允许开发者创建可重用的软件部件,这些部件可以嵌入到各种应用程序中,提供特定的功能。在这个"ActiveX控件 时钟初级"的资源中,我们主要关注的是一个初级...
ActiveX控件是一种在Windows平台上广泛使用的组件技术,由微软公司开发,主要用于构建交互式的Web应用程序和增强桌面应用的功能。在这个“ActiveX控件做的时钟”项目中,我们主要探讨的是如何利用ActiveX控件来创建...
ActiveX控件是微软开发的一种技术,用于在Internet Explorer浏览器和其他支持ActiveX的环境中嵌入功能丰富的应用程序或组件。这些控件通常是用Microsoft Visual C++、Visual Basic等编程语言编写的,可以提供交互式...