CN102402455A - 调用动态链接库的方法和装置 - Google Patents

调用动态链接库的方法和装置 Download PDF

Info

Publication number
CN102402455A
CN102402455A CN2010102825068A CN201010282506A CN102402455A CN 102402455 A CN102402455 A CN 102402455A CN 2010102825068 A CN2010102825068 A CN 2010102825068A CN 201010282506 A CN201010282506 A CN 201010282506A CN 102402455 A CN102402455 A CN 102402455A
Authority
CN
China
Prior art keywords
dll
script
calls
call
ins
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN2010102825068A
Other languages
English (en)
Inventor
程国艮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Founder International Beijing Co Ltd
Peking University Founder Group Co Ltd
Original Assignee
Founder International Beijing Co Ltd
Peking University Founder Group Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Founder International Beijing Co Ltd, Peking University Founder Group Co Ltd filed Critical Founder International Beijing Co Ltd
Priority to CN2010102825068A priority Critical patent/CN102402455A/zh
Publication of CN102402455A publication Critical patent/CN102402455A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种调用动态链接库DLL的方法和装置,以解决现有技术中脚本引擎不能调用DLL的问题。该方法包括:脚本引擎在解释执行脚本文件时调用DLL调用代理插件;所述DLL调用代理插件根据所述脚本引擎提供的参数调用DLL,然后向所述脚本引擎返回调用结果。

Description

调用动态链接库的方法和装置
技术领域
本发明涉及计算机领域,特别地涉及一种调用动态链接库的方法和装置。
背景技术
目前呼叫中心技术领域交互语音响应***IVR(InteractiveVoice Response)产品基本上都支持IVR语音流程脚本定义的设计模式,也就是实际语音流程通过非编程的脚本就可以实现。各种产品脚本规范不同,有自定义规范,也有采用标准规范的,例如JS,VXML等;脚本的的编辑方式也各不同,有文本方式,也有图形化方式。
目前主要IVR产品其脚本和外部进行信息交互的方式一般都是采用调用ACTIVEX控件、网络接口通讯例如HTTP、WEBSEVICE等技术实现。部分特别复杂的代码逻辑,例如加密算法等,通常也不是也不能通过脚本实现,而采用外部动态链接库DLL或者ActiveX的方式进行封装。
国内IVR产品和绝大多数的国际IVR产品都无法实现完全自定义标准DLL的本地调用。少数的IVR产品能够实现DLL的调用,但其无法共享用。
互联网浏览器IE(Internet Explore)也无法直接调用本地DLL。
总体而言,现有的脚本引擎不能调用DLL,这在一些应用场合中会带来使用上的不便。
发明内容
本发明的主要目的是提供一种调用动态链接库DLL的方法和装置,以解决现有技术中脚本引擎不能调用DLL的问题。
为解决上述问题,根据本发明的一个方面,提供了一种调用动态链接库(DLL)的方法,该方法包括:脚本引擎在解释执行脚本文件时调用DLL调用代理插件;所述DLL调用代理插件根据所述脚本引擎提供的参数调用DLL,然后向所述脚本引擎返回调用结果。
为解决上述问题,根据本发明的另一方面,提供了一种调用动态链接库DLL的装置,该装置包括:脚本引擎,用于在解释执行脚本文件时调用所述DLL调用代理插件;DLL调用代理插件,用于根据所述脚本引擎提供的参数调用DLL,然后向所述脚本引擎返回调用结果。
根据本发明的技术方案,脚本引擎在解释执行脚本文件时调用DLL调用代理插件,DLL调用代理插件根据脚本引擎提供的参数调用DLL,然后向脚本引擎返回调用结果,这样就在脚本定义和DLL之间架设了一个桥梁,以实现不同自定义DLL的自适应。因此应用本发明实施例的技术方案使得脚本引擎能够调用DLL,并且需调用的DLL可以在脚本中自定义,以及能够在IE中调用任意标准DLL。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例中的调用DLL的方法的流程图;
图2是根据本发明实施例中的调用动态链接库DLL的装置的结构的示意图;
图3是根据本发明实施例中的DLL调用***的结构的示意图;
图4是根据本发明实施例中的对于不支持ActiveX调用的脚本规范和引擎的应用场景中DllProxy插件调用方式的示意图;以及
图5是根据本发明实施例中的对于支持ActiveX调用的脚本规范和引擎的应用场景中DllProxy插件调用方式的示意图。
具体实施方式
下面将参考附图并结合实施例,来详细说明本发明。
图1是根据本发明实施例中的调用DLL的方法的流程图。如图1所示,本发明实施例中,调用DLL的方法主要包括如下步骤:
步骤S11:脚本引擎在解释执行脚本文件时调用DLL调用代理插件;
步骤S12:DLL调用代理插件根据脚本引擎提供的参数调用DLL,然后向脚本引擎返回调用结果。
以下对图1中的流程再作进一步说明。在执行步骤S12时,DLL调用代理插件可以先根据脚本引擎提供的参数确定需调用的DLL,然后再调用所述需调用的DLL。DLL调用代理插件可以实现为ActiveX组件。
这里的脚本文件可以遵守标准脚本规范,例如Jscript脚本规范和VBScript脚本规范。脚本文件也可以是遵守其他脚本规范。这样,在步骤S11,即脚本引擎在解释执行脚本文件时调用DLL调用代理插件之前,可以先保存根据预设的脚本规范编写的脚本文件,然后脚本引擎获取该预设的脚本规范和编写的脚本文件。这里的预设的脚本规范中包含关于定义和调用DLL的规范信息,也就是说,该预设的脚本规范中说明了在脚本中如何编写代码才能定义和调用DLL。
图2是根据本发明实施例中的调用动态链接库DLL的装置的结构的示意图。如图2所示,本发明实施例中的调用DLL的装置20主要包括脚本引擎21和DLL调用代理插件22,其中脚本引擎21用于在解释执行脚本文件时调用DLL调用代理插件22;DLL调用代理插件22用于根据脚本引擎21提供的参数调用DLL,然后向脚本引擎21返回调用结果。其中DLL调用代理插件22可以实现为ActiveX组件。
调用代理插件22的一种结构是包括:控件接口模块,用于接收脚本引擎21提供的参数;调用逻辑模块,用于根据脚本引擎21提供的参数确定需调用的DLL;DLL接口模块,用于调用所述需调用的DLL。
脚本引擎21还可用于获取预设的脚本规范和根据该预设的脚本规范编写的脚本文件;其中的脚本规范中包含关于定义和调用DLL的规范信息。
以下再通过一个具体的例子对本发明实施例作进一步说明。在该例子中,主要进行如下步骤以实现脚本引擎对DLL的调用:
1、实现脚本中DLL定义和DLL调用的规范。对于非标准的脚本规范,在既有脚本规范中增加DLL定义和DLL调用的脚本规范。对于标准脚本引擎,例如JS脚本,通过当前脚本规范的脚本代码实现DLL定义和DLL调用规范。
2、脚本引擎在解释执行DLL定义和DLL调用代码的时候,调用“DLL调用代理插件”。
3、“DLL调用代理插件”根据脚本和引擎的输入,根据一些逻辑规则,识别到正确的DLL入口函数,并调用。
4、“DLL调用代理插件”将调用DLL的输出按照脚本规则和脚本引擎的代码要求转换并输出。
5、脚本引擎继续执行脚本。
对于上述步骤,以下再加以进一步说明。对于定义的脚本规范,该规范说明了在脚本中如何编写代码才能定义和调用DLL。如果是标准的脚本,则无须修改脚本规范,通过现有脚本规范进行定义一.套脚本逻辑定义。
对于DLL调用代理插件(后简称:DllProxy),该插件可实现为一个ActiveX组件,实现各种DLL的调用代理。
DllProxy的入口函数参数定义包含要调用DLL文件名称、要调用DLL函数名称、DLL函数的调用方式、要调用DLL函数的参数定义(含返回参数)、所有要调用DLL函数所需的实际参数和返回参数。由于实际DLL的函数入口参数和DllProxy的不一样,所以DllProxy实现其识别、入参转换、调用、出参转换等功能。
以IE(Internet Explore)为例,可以将其当作是一个特别的脚本引擎产品,能够实现对JScript脚本和VBScript的解释,通过JS或者VBS脚本中调用DllProxy ActiveX对象,实现在IE中动态自定义DLL的调用。
在设计DLL调用代理插件时可以按如下方式进行:
1、设计一组DLL接口,能够自动适应参数在60个以内的任何标准DLL的动态调用。
2、设计一个DllProxy的控件接口,提供能够满足DLL调用的所有信息和数据。
3、设计一个调用逻辑模块。能够根据控件接口的输入,自动找到可适应的DLL接口类型接口并调用,进行必要的数据转换,将调用接口结果输出。
根据上述方式得到的DLL调用***如图3所示,图3是根据本发明实施例中的DLL调用***的结构的示意图。
最后,对DllProxy插件调用方式加以说明。
A、如图4,图4是根据本发明实施例中的对于不支持ActiveX调用的脚本规范和引擎的应用场景中DllProxy插件调用方式的示意图。对于不支持ActiveX调用的脚本规范和引擎,则需要在脚本引擎中实现DllProxy调用,修改脚本规范,通过修改的脚本规范实现对标准DLL调用。
B、如图5,图5是根据本发明实施例中的对于支持ActiveX调用的脚本规范和引擎的应用场景中DllProxy插件调用方式的示意图。对于支持ActiveX调用的脚本规范和引擎,则可以在脚本中直接调用DllProxy完成标准DLL调用,也可以使用方式A,如图4所示。
根据本发明实施例的技术方案,脚本引擎在解释执行脚本文件时调用DLL调用代理插件,DLL调用代理插件根据脚本引擎提供的参数调用DLL,然后向脚本引擎返回调用结果,这样就在脚本定义和DLL之间架设了一个桥梁,以实现不同自定义DLL的自适应。因此应用本发明实施例的技术方案使得脚本引擎能够调用DLL,并且需调用的DLL可以在脚本中自定义,以及能够在IE中调用任意标准DLL。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种调用动态链接库(DLL)的方法,其特征在于,包括:
脚本引擎在解释执行脚本文件时调用DLL调用代理插件;
所述DLL调用代理插件根据所述脚本引擎提供的参数调用DLL,然后向所述脚本引擎返回调用结果。
2.根据权利要求1所述的方法,其特征在于,所述DLL调用代理插件根据脚本引擎提供的参数调用DLL包括:
所述DLL调用代理插件根据所述脚本引擎提供的参数确定需调用的DLL;
所述DLL调用代理插件调用所述需调用的DLL。
3.根据权利要求1所述的方法,其特征在于,所述DLL调用代理插件实现为ActiveX组件。
4.根据权利要求1所述的方法,其特征在于,所述脚本文件遵守标准脚本规范。
5.根据权利要求4所述的方法,其特征在于,所述标准脚本规范包括Jscript脚本规范和VBScript脚本规范。
6.根据权利要求1所述的方法,其特征在于,所述脚本引擎在解释执行脚本文件时调用DLL调用代理插件之前还包括:
保存根据预设的脚本规范编写的脚本文件,所述预设的脚本规范中包含关于定义和调用DLL的规范信息;
脚本引擎获取所述预设的脚本规范和编写的脚本文件。
7.一种调用动态链接库DLL的装置,其特征在于,包括:
脚本引擎,用于在解释执行脚本文件时调用所述DLL调用代理插件;
DLL调用代理插件,用于根据所述脚本引擎提供的参数调用DLL,然后向所述脚本引擎返回调用结果。
8.根据权利要求7所述的装置,其特征在于,所述DLL调用代理插件包括:
控件接口模块,用于接收所述脚本引擎提供的参数;
调用逻辑模块,用于根据所述脚本引擎提供的参数确定需调用的DLL;
DLL接口模块,用于调用所述需调用的DLL。
9.根据权利要求7所述的装置,其特征在于,所述DLL调用代理插件实现为ActiveX组件。
10.根据权利要求7所述的装置,其特征在于,所述脚本引擎还用于获取预设的脚本规范和根据该预设的脚本规范编写的脚本文件;其中,所述脚本规范中包含关于定义和调用DLL的规范信息。
CN2010102825068A 2010-09-14 2010-09-14 调用动态链接库的方法和装置 Pending CN102402455A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2010102825068A CN102402455A (zh) 2010-09-14 2010-09-14 调用动态链接库的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2010102825068A CN102402455A (zh) 2010-09-14 2010-09-14 调用动态链接库的方法和装置

Publications (1)

Publication Number Publication Date
CN102402455A true CN102402455A (zh) 2012-04-04

Family

ID=45884686

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010102825068A Pending CN102402455A (zh) 2010-09-14 2010-09-14 调用动态链接库的方法和装置

Country Status (1)

Country Link
CN (1) CN102402455A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103235722A (zh) * 2013-04-19 2013-08-07 南京莱斯信息技术股份有限公司 一种ActiveX控件框架技术实现方法
CN103856396A (zh) * 2012-11-30 2014-06-11 中兴通讯股份有限公司 插件间的报文传递方法及装置、代理插件
WO2015154700A1 (en) * 2014-04-11 2015-10-15 Tencent Technology (Shenzhen) Company Limited Method and apparatus for repairing dynamic link library file
CN105094773A (zh) * 2014-05-09 2015-11-25 阿里巴巴集团控股有限公司 模块功能的重用方法及***
CN105630526A (zh) * 2014-11-03 2016-06-01 阿里巴巴集团控股有限公司 脚本的加载控制方法及装置
CN107315628A (zh) * 2017-06-13 2017-11-03 浪潮金融信息技术有限公司 插件调用方法及装置、计算机可读存储介质、终端
CN111596970A (zh) * 2020-05-12 2020-08-28 广州市百果园信息技术有限公司 动态库延迟加载方法、装置、设备和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060026584A1 (en) * 2004-07-27 2006-02-02 Muratori Richard D Explicit linking of dynamic link libraries
JP2006113935A (ja) * 2004-10-18 2006-04-27 Hitachi Ltd ダイナミックリンクライブラリ呼び出しコード生成方法、プログラム、および、装置
CN101021804A (zh) * 2007-03-13 2007-08-22 华为技术有限公司 调用动态库的方法、装置及动态库服务器
CN101387968A (zh) * 2008-09-28 2009-03-18 杭州华三通信技术有限公司 解决多图形化识别与验证动态链接库冲突的方法和装置
US20090128573A1 (en) * 2005-02-09 2009-05-21 Canice Lambe Memory Based Content Display Interception

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060026584A1 (en) * 2004-07-27 2006-02-02 Muratori Richard D Explicit linking of dynamic link libraries
JP2006113935A (ja) * 2004-10-18 2006-04-27 Hitachi Ltd ダイナミックリンクライブラリ呼び出しコード生成方法、プログラム、および、装置
US20090128573A1 (en) * 2005-02-09 2009-05-21 Canice Lambe Memory Based Content Display Interception
CN101021804A (zh) * 2007-03-13 2007-08-22 华为技术有限公司 调用动态库的方法、装置及动态库服务器
CN101387968A (zh) * 2008-09-28 2009-03-18 杭州华三通信技术有限公司 解决多图形化识别与验证动态链接库冲突的方法和装置

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103856396A (zh) * 2012-11-30 2014-06-11 中兴通讯股份有限公司 插件间的报文传递方法及装置、代理插件
CN103235722A (zh) * 2013-04-19 2013-08-07 南京莱斯信息技术股份有限公司 一种ActiveX控件框架技术实现方法
CN103235722B (zh) * 2013-04-19 2016-08-24 南京莱斯信息技术股份有限公司 一种ActiveX控件框架技术实现方法
WO2015154700A1 (en) * 2014-04-11 2015-10-15 Tencent Technology (Shenzhen) Company Limited Method and apparatus for repairing dynamic link library file
US9928134B2 (en) 2014-04-11 2018-03-27 Tencent Technology (Shenzhen) Company Limited Method and apparatus for repairing dynamic link library file
CN105094773A (zh) * 2014-05-09 2015-11-25 阿里巴巴集团控股有限公司 模块功能的重用方法及***
CN105630526A (zh) * 2014-11-03 2016-06-01 阿里巴巴集团控股有限公司 脚本的加载控制方法及装置
CN105630526B (zh) * 2014-11-03 2019-04-19 阿里巴巴集团控股有限公司 脚本的加载控制方法及装置
CN107315628A (zh) * 2017-06-13 2017-11-03 浪潮金融信息技术有限公司 插件调用方法及装置、计算机可读存储介质、终端
CN107315628B (zh) * 2017-06-13 2020-11-17 浪潮金融信息技术有限公司 插件调用方法及装置、计算机可读存储介质、终端
CN111596970A (zh) * 2020-05-12 2020-08-28 广州市百果园信息技术有限公司 动态库延迟加载方法、装置、设备和存储介质

Similar Documents

Publication Publication Date Title
US11386893B2 (en) Human-computer interaction processing system, method, storage medium, and electronic device
CN102096631B (zh) 接口测试方法及装置
US8271609B2 (en) Dynamic service invocation and service adaptation in BPEL SOA process
CN102402455A (zh) 调用动态链接库的方法和装置
CN110765013B (zh) 一种流程自动化执行方法及***
EP4002121A1 (en) Middleware interface and middleware interface generator
WO2018210096A1 (zh) 一种基于规则引擎的规则配置方法、终端、设备以及存储介质
CN109445323B (zh) 一种基于web的分布式智能测控软件平台设计方法
CN105630461A (zh) 一种android应用界面的管理方法
CN109933315A (zh) 一种图形化的业务处理***和方法
US20200412875A1 (en) System, device, and method of performing data analytics for advising a sales representative during a voice call
CN112214334A (zh) 微服务调用方法、装置、电子设备及计算机可读存储介质
CN113467972A (zh) 通信接口构造方法、装置以及计算机设备、存储介质
CN107562428A (zh) 基于规则的自适应软件界面布局方法及***
CN110046052B (zh) 一种服务调用方法及装置
CN113568661A (zh) 一种基于Android sdk实现app混合开发的方法
CN112558968A (zh) 一种资源树视图的生成方法、装置、设备及存储介质
CN109597695B (zh) 一种数据处理方法、装置及设备
CN109005163B (zh) 一种http动态请求服务调用方法
CN113626001A (zh) 一种基于脚本的api动态编排方法及装置
CN113111111A (zh) 多数据源数据库接入方法
CN116360752B (zh) 面向java的函数式编程方法、智能终端和存储介质
CN112612554B (zh) 一种利用适配服务分析器来统一管理操控硬件模块的方法
CN113553040B (zh) 可见即可说识别功能的注册实现方法、装置、设备及介质
CN113590086B (zh) 快速开发软件的方法、计算机设备、及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20120404