欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

WEB页面通过ActiveX控件调用DLL动态库(三):VS2013编写ATL DLL(ActiveX)并通过Web调用ATLDLL

程序员文章站 2024-03-15 23:08:54
...

WEB页面通过ActiveX控件调用DLL动态库(三):VS2013编写ATL DLL(ActiveX)并通过Web调用ATLDLL
本文的在于使用VS2013编写ATL生成DLL后并通过Web页面进行调用,ATL(ActiveX)调用DLL将在下节四种介绍。
调用流程为 Web >ATLDLL。
(一)创建ATL
1.打开vs2013,新建项目为ATL空项目,其名为ATLtest。直接点击完成即可
WEB页面通过ActiveX控件调用DLL动态库(三):VS2013编写ATL DLL(ActiveX)并通过Web调用ATLDLL
2.在解决方案ATLtest上右键,添加,类,选择ATL简单对象。点击添加。
WEB页面通过ActiveX控件调用DLL动态库(三):VS2013编写ATL DLL(ActiveX)并通过Web调用ATLDLL
3.填写ATL对象名称,注:ProgID为Web调用时所使用的。点击完成。
WEB页面通过ActiveX控件调用DLL动态库(三):VS2013编写ATL DLL(ActiveX)并通过Web调用ATLDLL
4.在类视图中找到IATLtestdemo接口,右键添加、方法。
WEB页面通过ActiveX控件调用DLL动态库(三):VS2013编写ATL DLL(ActiveX)并通过Web调用ATLDLL
方法名为multip
添加两个LONG型入参a、b,LONG*的返回值out。点击完成。
WEB页面通过ActiveX控件调用DLL动态库(三):VS2013编写ATL DLL(ActiveX)并通过Web调用ATLDLL
5.在解决方案的源文件ATLtestdemo.cpp中,出现了添加的方法具体函数:
WEB页面通过ActiveX控件调用DLL动态库(三):VS2013编写ATL DLL(ActiveX)并通过Web调用ATLDLL
在其中输入以下代码:完成两数乘积。

STDMETHODIMP CATLtestdemo::multip(LONG a, LONG b, LONG* out)
{
	// TODO:  在此添加实现代码
	int mul = static_cast<int>(a)*  static_cast<int>(b);
	*out = static_cast<LONG>(mul);
	return S_OK;
}

6.选择Release,右键解决方案,属性,链接器,常规,逐用户重定向选择是。
WEB页面通过ActiveX控件调用DLL动态库(三):VS2013编写ATL DLL(ActiveX)并通过Web调用ATLDLL
WEB页面通过ActiveX控件调用DLL动态库(三):VS2013编写ATL DLL(ActiveX)并通过Web调用ATLDLL
7.右键解决方案,生成成功。
WEB页面通过ActiveX控件调用DLL动态库(三):VS2013编写ATL DLL(ActiveX)并通过Web调用ATLDLL
8.在其工程目录下Release文件夹下生成了编译好的ATLtest.dll文件
WEB页面通过ActiveX控件调用DLL动态库(三):VS2013编写ATL DLL(ActiveX)并通过Web调用ATLDLL
9.64位机器将ATLtest.dll文件放置C:\Windows\SysWOW64下
32位放置C:\Windows\System32下。
管理员身份运行cmd,进入到C:\Windows\SysWOW64下,
执行加载rebsvr32 ATLtest.dll
WEB页面通过ActiveX控件调用DLL动态库(三):VS2013编写ATL DLL(ActiveX)并通过Web调用ATLDLL
(卸载rebsvr32 /u ATLtest.dll)
注册成功。
(二)编写HTML
创建一个HTML后缀文件,输入一下代码:

<html>
<head>
    <title>Document</title>

    <script language="javascript" type="text/javascript">
        function functionInfo() {
		    var mydll=new ActiveXObject("ATLtestdemo");
			var result=mydll.multip(2,4);

            alert(result);
        }
    </script>


</head>
<body>
<input type="button" value="test" onclick="functionInfo()">
</body>
</html>

注意:两个注意的地方,一个是web调用DLL的名称,一个是所建立的方法。
WEB页面通过ActiveX控件调用DLL动态库(三):VS2013编写ATL DLL(ActiveX)并通过Web调用ATLDLL
目前ActiveX支持IE浏览器,将编写好的html文件拖入到web上,点击允许阻止的内容。点击test按钮,
WEB页面通过ActiveX控件调用DLL动态库(三):VS2013编写ATL DLL(ActiveX)并通过Web调用ATLDLL
选择是
WEB页面通过ActiveX控件调用DLL动态库(三):VS2013编写ATL DLL(ActiveX)并通过Web调用ATLDLL
即可弹出正确计算后的数字。
WEB页面通过ActiveX控件调用DLL动态库(三):VS2013编写ATL DLL(ActiveX)并通过Web调用ATLDLL