易语言动态链接库制作详解

时间:2021-09-26 14:23:33

一.关于易语言 DLL

从易语言 3.6 版开始,已经能够支持对DLL动态链接库的开发, 编译出的DLL是标准的DLL,和其他编程语言生成的标准 DLL 的调用方法相同。易语言编写出的DLL,在非独立编译exe时只需要DLL文件随应用程序一起发行,而独立编译 exe 时无需将 DLL 文件随应用程序一起发行。

二.新建易语言DLL程序

新建一个易语言程序,然后选择 “windows动态链接库”图标,易语言就会自动创建

出编写态连接库的代码区(程序集)

创建完毕就可以在代码区里编写DLL程序。

三.如何生成动态连接库 (DLL)

易语言中的 DLL 编写方法和易模块的编写方法类似,都需要有对外的公开接口。下面将通过编写一个“自创信息框”来看一下用易语言如何编写和调用DLL。

编写DLL时的公开接口只能由以下方式生成,新建一个子程序,然后把“公开”选中,在DLL中任何程序集中选中“公开”的子程序都作为对外接口:

修改一下子程序名称,叫“自创信息框”,然后创建2个参数“标题”和“内容”,都定义成整数型:

注意:目前DLL接口函数中的参数只能为以下9种之一:

字节型、短整数型、整数型、长整数型、小数型、双精度小数型、逻辑型、日期时间型、子程序指针型

定义好DLL参数后,我们可以创建新窗体作为信息框窗口,在新窗体上画一个按钮,一个标签,为了让用户按下确定按钮后,窗口能关闭,可以双击确定按钮,创建按钮“被单击”的触发事件,写入代码:

然后返回到刚才的程序集1代码区开始编写代码。

由于2个参数都定义成了整数型,而调用的时候传递过来的标题和内容一定是文本型的,那么怎样去取得里面内容呢?别急,易语言3.6版中考虑到了这个问题,所以新增加了3个命令:“指针到文本”、“指针到字节集”、“写到内存”。

当用户传递的是文本型或者字节集型,易语言将自动转换成指针,我们可以使用“指针到文本”或“指针到字节集”把原来的文本返回出来。如下图所示:

到此已经完成“自创信息框DLL”所有工作,最后可以选择菜单“程序”→“编译”将其编译为DLL。如下图所示:

也可以使用快捷键“F7”编译刚刚编写的DLL,我们将编译以后的DLL名称命名为“自创信息框”,如下图所示:

通过以上,用易语言编写DLL的过程序基本完成。

四.如何使用DLL

用易语言编写的DLL可以在易语言自身调用,同样,也可以在其他编程语言中调用,如(VB,VC,Delphi等)

在易语言中的调用方法如下图所示:

注意:定义时,2个参数都定义成文本型

最后请在窗体上画一个按钮,双击按钮,写上代码调用这个DLL,按下按钮后,就会看到效果了!

注意事项:

1:调用DLL时的Dll对应命令名必须和接口名称完全一样。

2:接口函数的参数必须是基本数据类型,且不能为字节集型、文本型。

3:易语言3.6版中新增加3个命令“指针到文本”、“指针到字节集”、“写到内存”,这3个命令最佳使用场合就是在易语言回调子程序和易语言DLL公开子程序用作获取外部数据。在Dll中使用文本参数的方法请参考“取汉字拼音.rar”程序

4:易语言编写的DLL如果要在其他编程语言中使用,必须附带对应的易语言支持库

1. 如何在易语言中调用类型库

Q: What's 类型库?

A: 类型库是一个描述信息的集合,这些描述信息涉及组件的类、接口及接口上的方法以及这些方法的参数类型。类型库通过 ITYPELIB 接口来访问,用他可以轻松的解决如用户界面等问题,使程序开发更加的简单。

现在在“易语言”中,也可以使用类型库了,那么如何调用类型库呢?

首先运行“易语言”选择“工具”→“封装类型库及OCX组件”菜单

会出现一个注册OCX及类型库的窗口

我们向下拖动滚动条,可以看到一个类型库的分类,在这个分类之前的就是我们系统中的OCX组件,这个我们已经非常熟悉了,这里就不作说明了,在类型库的分类之后,就是我们系统中有的类型库,我们可以选择我们需要使用的注册。

我们可以选择我们需要的类型库之后选择“下一步”

之后我们会看到一个类似我们使用过的OCX注册那样的窗口,我们可以在这里对这个类型库作一些汉化等操作

在完成了我们所需要的汉化工作之后,我们可以点击“保存”按钮来保存我们刚才的操作

点击保存之后,会有提示信息提示你是否要把我们注册好的类型库保存到“易语言”目录中去

我们选择“是”之后,会提示我们安装成功

这时我们再运行“易语言”,在支持库中,就会看到我们刚才注册的类型库。

到这里我们已经完成把类型库注册到“易语言”中的工作了,下面在让我们来了解一下如何在易语言中使用这些类型库

首先我们展开数据类型

我们会看到他下面有很多类型,而这些类型下面又有很多命令,我们可以把它们看作是定义好了的自定义数据,每一个类型就是自定义数据类型的一个类型名,下面的每一个命令都是一个成员。

那么我们怎么使用他们呢?

首先创建一个变量,他的类型就是这些项目的名称,我们可能在类型选择中找不到这些,我们可以点击这项来展开所有的类型,就会发现我们需要的。

选择我们需要的类型就可以了

具体的使用方法就和使用自定义数据类型一样,直接使用我们选择类型中的命令就可以了,如果还不能理解,想一下字体是怎么用的?定义“字体”为字体类型,使用“字体.加粗=真 ”方法是一样。

我们再回过头来看一下,把滚动条向下拉,我们会看到一些事件

箭头所示的就是office类型库包括的事件,这些事件如何使用呢

我们会发现在控件箱中多出了一些控件,这些控件就是刚才我们注册的类型库的触发事件,我们需要使用它的时候,就可其他组件一样把它拖放到窗体上就可以了

这是我们会发现在属性中多出一个控件,我们选择该控件的触发事件就可以了

他的使用和其他触发事件是一样的

到这里,我们已经了解了在“易语言”中是如何使用类型库了,是不是很简单?其实类型库的使用就和其他的命令没有什么区别,不要感觉它多么深奥,只要我们有健全的资料就可以很好的使用它们为我们写出很好的软件。

2. 如何在易语言中使用类型库

如何在易语言中使用类型库,我们下面用一个小例程来说明,首先打开“易语言”

选择“工具”→“封装类型库及OCX组件”注册word类型库。

然后左边支持库表中会出现word的类型库

然后我们在窗体中画上两个按钮以便我们使用,至于旁边画的那个com控件我们等一下

现在我们开始写入代码,如果按照com对象的方法来操作word,我们就要先创建一个word的对象,连接“Word.Application”,其实这也是调用“word”对象中的“Application”对象,但是现在不用这样了,通过类型库我们可以直接来操作“Application”首先我们创建一个程序集变量,类型为“Application” ,这样我们就可以直接操作“Application”中的命令

在“_按钮1_被单击”事件中输入

这两行代码的作用是首先将word的可视属性设置为“真”,然后再将word的标题改为“易语言word”,运行一下看看效果,是不是改变了?

以前我们用com对象操作word可以通过word对象提供的“quit”命令来结束word,但是并没有相应的触发事件,我们只能使用,不能在这些事件中处理其他事情,现在可以做到了,我们上面看到的窗体上画的那个com控件就可以起到这个作用,我们在右边组件箱中选择这个控件画到窗体上。

这个就是word对象中“Application”对象的所有触发事件,我们在选择“Application事件1”下来它的事件组合框选择“quit”事件

会在代码区生成一个“_Application事件1_Quit”子程序,我们再这个子程序下面输入如下代码

这只是“Application”对象的一个触发事件,我们怎么才能触发他呢?在“_按钮2_被单击”子程序中输入如下代码

现在我们运行代码,先单击按钮1创建,再单击按钮2关闭 word,你会发现并没有触发“_Application事件1_Quit”事件,没有弹出信息框,因为我们虽然调用了“_Application事件1_Quit”事件,但是并没有将“_Application事件1_Quit”事件和“Application”挂钩,我们必须在“__启动窗口_创建完毕”将这个事件和“Application”挂钩,不然是无法触发这个事件的。

这样我们运行 Word,单击按钮 2 结束,就会出现信息框了.

原文链接:https://blog.csdn.net/studyplus/article/details/21795125