JS调用ActiveX中的DLL文件并调用DLL中的函数问题

时间:2024-03-14 10:06:41

1:本地安装vs2010,有时报错缺少WindowsSP1更新包,下载安装即可。

2:安装完成后,打开VS2010,

3:文件--新建--项目,找到ATL项目(一种COM组件写法),输入项目名称,点击确定(本地我们以DLLDemo为例)

JS调用ActiveX中的DLL文件并调用DLL中的函数问题


JS调用ActiveX中的DLL文件并调用DLL中的函数问题

4:点击下一步之后,点击完成,可以看到如下的界面。

JS调用ActiveX中的DLL文件并调用DLL中的函数问题

5:以上就是一些初步的建站步骤,下面就是具体的实现方法,右键点击 项目名称DLLDemo 添加--类

JS调用ActiveX中的DLL文件并调用DLL中的函数问题

6:在添加类的页面中选择ATL简单对象,点击完成,此处不用填写名称和位置,下一步骤中完成

JS调用ActiveX中的DLL文件并调用DLL中的函数问题


7:在ATL简单对象向导中,简称写上我们项目的名称,其他自动生成,此处的ProgID自己填写,后续JS调用中我们需要用到

JS调用ActiveX中的DLL文件并调用DLL中的函数问题

8:到此,全部点击是

JS调用ActiveX中的DLL文件并调用DLL中的函数问题

JS调用ActiveX中的DLL文件并调用DLL中的函数问题

9:以下开始添加方法,工具栏视图——类视图——打开IDLLDemo接口

JS调用ActiveX中的DLL文件并调用DLL中的函数问题

10:右击添加-添加方法

JS调用ActiveX中的DLL文件并调用DLL中的函数问题

11:下面是添加参数,首先选择入参选择in,参数类型是LONG,参数名自己想一个,点击添加,接下来是出参,首先选择参数类型LONG*,选择框retval打勾,再填写出参名称

JS调用ActiveX中的DLL文件并调用DLL中的函数问题

点击完成

12:打开视图——解决方案资源管理器,具体如下图

JS调用ActiveX中的DLL文件并调用DLL中的函数问题

双击打开,添加具体实现方法,在方法DLLDemo中添加具体实现方法,只是为了测试,所以比较简单

JS调用ActiveX中的DLL文件并调用DLL中的函数问题

注意,此处*不做具体的运算,是将结果返回类型转换,保存

13:项目生成

JS调用ActiveX中的DLL文件并调用DLL中的函数问题

14:此时项目生成失败,我们要做调整,步骤如图

JS调用ActiveX中的DLL文件并调用DLL中的函数问题

此处将逐用户重定向选择:是

JS调用ActiveX中的DLL文件并调用DLL中的函数问题

点击应用——完成

15:然后重新生成,到此成功

JS调用ActiveX中的DLL文件并调用DLL中的函数问题

16:打开文件——打开——文件 中找到项目根目录,在release文件夹下, 找到生成的dll文件DLLDemo.dll

JS调用ActiveX中的DLL文件并调用DLL中的函数问题

到这为止,dll就制作成功了

下面注册

      1:将DLLDemo.dll放入系统文件,(64位:C:\Windows\SysWOW64)(32位:C:\Windows\System32)

      2:以管理员身份运行cmd,在该目录下运行:regsvr32 DLLDemo.dll

JS调用ActiveX中的DLL文件并调用DLL中的函数问题

注册成功

下面是js调用,此调用方法是IE浏览器调用,

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

    <script language="javascript" type="text/javascript">
        function functionInfo() {
            var mydll=new ActiveXObject("QQQ");
            var result=mydll.DLLDemo(5);

            alert(result);
        }
    </script>




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

运行:

JS调用ActiveX中的DLL文件并调用DLL中的函数问题

运行成功,此方法为js调用ActiveX中dll实现方法,因此只支持ie浏览器,所以ie浏览器需要一系列的设置,详情百度,关于另一种方法CLSID调用,后续更。