首先,我们可以运行regsvr32将其注册,然后用COM Explorer查找dll中的文件,可以在其中查到该dll的classid和控件名称.例如控件名为test而classid为BF96561D-FD6D-47CE-B9F0-9967695CEEBC,那我们就可以将此dll放在与html文件同目录下.然后写如下html代码,我们假定我们需要调用该dll中的test方法,该方法返回客户端的操作系统名.
<html>
<head>
<script>
function mytest()
{
var o=new ActiveXObject("test");
alert(o.test());
}
</script>
</head>
<body>
<input type="button" value="测试" onclick="mytest();"/>
<object id='localip' classid="clsid:BF96561D-FD6D-47CE-B9F0-9967695CEEBC" codeBase="test.dll" width="0" height="0"/>
</body>
</html>
这样,将html运行起来,当我们点测试按钮的时候,将弹出一个提示框,输出用户的操作系统类型如XP,当然如何得到这个XP,是写DLL的人去做,我们无须关心.不过这样可能会报js错误,为什么呢?因为IE也不是白痴,你随意获取人家系统信息,不进行控制那不都中毒了么,所以我们要将自动下载未签名active等被禁用的改为询问.
是否有更好的解决办法呢?当然有,我们可以将dll打包成cab,打包cab的工具也无须到处去找,我们的操作系统中的system32就带了这个工具,直接开始->运行->IExpress 就可以按照需求一步一步的打包了.然后将我们的html代码中的 codeBase="test.dll" 改成 codeBase="test.cab" 这样就不需要调整安全级别了,但是还是会弹出是否允许之类的提示,毕竟对客户来说这是很危险的行为.
就说到这了,花了半天的时间解决的小问题,拿来分享下成果了.
分享到:
相关推荐
接下来,OCX控件调用C++编写的DLL文件,这是一种常见的模块化设计,可以将一些复杂或通用的功能封装到DLL中,以提高代码复用性。在C++中,你可以使用`LoadLibrary`和`GetProcAddress`函数来动态加载和调用DLL中的...
JavaScript调用ActiveX对象是一种在特定环境下,如Internet Explorer浏览器,使用JavaScript与ActiveX技术进行交互的方法。ActiveX是微软提出的一种技术,主要用于创建可插入Web页面的控件,提供丰富的用户界面和...
4. **调用JavaScript**:在C++的实现中,使用宿主环境提供的API(例如,在IE中是`IDispatch`接口)来执行JavaScript代码。这通常涉及构建一个字符串表示的JavaScript语句,并通过API传递给宿主。 5. **传递参数**:...
JavaScript代码通常会展示如何初始化和调用C++ COM对象的方法。 7. **安全与性能**:虽然COM提供了一种强大的跨语言互操作方式,但也有安全风险。JavaScript可以直接访问C++代码,可能导致意外的内存访问或权限问题...
在C++或C#等编程语言中,可以通过LoadLibrary和GetProcAddress等API来加载并调用DLL中的函数。这是一个通用方法,无论是在桌面应用还是服务器程序中,都可以用这种方式使用DLL。 学习这个例子,你可以掌握以下关键...
- 为了测试DLL,可以创建一个Win32控制台应用程序,通过`LoadLibrary`和`GetProcAddress`等API来加载和调用DLL中的函数,从而确保DLL的正确性。 4. **创建ActiveX控件** 创建ActiveX控件通常涉及使用ATL或MFC的...
4. **JavaScript调用COM**:在浏览器环境下,JavaScript不能直接调用COM组件,但在ActiveX支持的环境中,可以通过ActiveXObject对象来创建和访问COM组件。案例可能演示了如何在Internet Explorer中创建和使用...
在IT领域,C++WebBrowser是一个重要的组件,它允许开发者在C++应用程序中嵌入一个网页浏览器控件。这个控件通常基于Internet Explorer的引擎,因此可以用来展示HTML页面、执行JavaScript以及与网页内容进行交互。...
标题中的“脚本可调用的COM组件2”指的是在编程环境中,特别是脚本语言(如JavaScript、VBScript等)可以调用的组件对象模型(Component Object Model, COM)组件的第二部分。COM是微软提出的一种软件接口技术,允许...
5. **自动化(Automation)**:自动化使得COM组件对脚本语言(如VBScript或JavaScript)友好,使得非托管代码(如C++)和托管代码(如.NET)可以共享组件。 6. **延迟绑定与早期绑定**:延迟绑定在运行时确定调用的...
《Visual C++实践与提高:ActiveX篇》是一份深入探讨使用Visual C++进行ActiveX开发的资源集合,其中包含了丰富的代码示例。ActiveX是微软提出的一种组件技术,它允许开发者创建可以在不同应用程序间共享的控件,极...
C++是一种强大的面向对象编程语言,MFC则是微软为简化Windows应用程序开发而设计的一个类库。MFC封装了Windows API,提供了更高级别的抽象,使开发者能够快速构建用户界面和应用程序逻辑。在MFC中,ActiveX控件可以...
10. **自动化**: COM还支持自动化特性,允许脚本语言如VBScript和JavaScript与COM组件交互,进一步拓宽了组件的应用范围。 在C++中,使用 ATL(Active Template Library)可以简化COM组件的开发。ATL提供了一系列宏...
总结来说,本教程涵盖了从创建ATL COM DLL到通过PHP进行调用的全过程,涉及了C++编程、COM技术、PHP脚本以及Web开发的多个层面。通过实践,开发者可以更好地理解不同技术间的交互,提高跨平台组件的开发能力。提供的...
这些控件通常以DLL(动态链接库)的形式存在,可以通过Visual Basic、Visual C++等开发工具进行创建和使用。在描述中提到的“实现和本机的socket通信”的OCX控件实例,意味着这个控件能够帮助程序员在应用程序中实现...
标题 "OCX控件打包成CAB--cab,html文件" 涉及到的是在IT行业中关于ActiveX控件和 CAB( Cabinet)文件的使用,以及如何将这些控件集成到HTML页面中以供JavaScript调用。ActiveX是微软推出的一种技术,允许在Web...
- 这些控件通常以COM(Component Object Model)对象的形式存在,可以被各种编程语言(如C++、VB等)调用,当然也包括C#。 2. **C#与.NET Framework**: - C#是一种面向对象的编程语言,与.NET Framework紧密集成...
例如,可以有一个`IFrameBridge`接口,其中包含`CallServerFunction`方法,供JavaScript调用。 2. 注册COM组件:编译完成后,我们需要在系统中注册这个COM组件,以便WebBrowser控件能够识别并加载它。注册通常是...
9. **C++与COM**:在C++中,可以使用 ATL(Active Template Library)来简化COM对象的实现。ATL提供了一系列宏和模板,帮助开发者快速创建COM组件。 10. **事件和事件处理**:COM支持事件模型,允许组件向其他对象...