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

一.关于易语言 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 结束,就会出现信息框了.

(0)

相关推荐

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

    一.关于易语言 DLL 从易语言 3.6 版开始,已经能够支持对DLL动态链接库的开发, 编译出的DLL是标准的DLL,和其他编程语言生成的标准 DLL 的调用方法相同.易语言编写出的DLL,在非独立编译exe时只需要DLL文件随应用程序一起发行,而独立编译 exe 时无需将 DLL 文件随应用程序一起发行. 二.新建易语言DLL程序 新建一个易语言程序,然后选择 "windows动态链接库"图标,易语言就会自动创建 出编写态连接库的代码区(程序集) 创建完毕就可以在代码区里编写DLL

  • 易语言子程序知识点详解

    将程序分割成较小的逻辑组件就可以简化程序设计任务,这些逻辑组件被称为子程序. 子程序可用于压缩重复任务或共享任务,例如,压缩频繁的计算处理等等. 用子程序编程有两大好处: 子程序可使程序划分成离散的逻辑组件,每个组件都比无子程序的整个程序容易调试及理解: 一个应用程序中的子程序,往往不必修改或只需稍作改动,便可以成为另一个程序的子程序. 每次调用子程序时,子程序中的所有语句都将被从第一条开始顺序执行,当执行到子程序尾部或者遇到"返回"命令时即返回到调用此子程序语句的下一条语句处. 子程

  • 易语言位取反操作详解

    易语言位取反实例讲解,这个是位运算,希望能帮上大家. 1.易语言新建一个windows窗口 点击进入代码编辑区 具体可以看看如何用易语言编写自己第一个程序? 2.我们输入位取反() 这个格式和中文差不多 3.我们展开这个函数看看 只有一个参数 4.这个参数是一个数值 是整数型 我们输入3 5.我们使用调试输出这个函数 具体可以看看易语言调试输出函数实例详解 我们输入调试输出(位取反 (3)) 6.运行结果为-4 它是把3用位表示然后取反,再换算成的数值

  • 易语言取时间间隔方法详解

    易语言取时间间隔,时间操作,教给大家. 1.打开易语言新建一个windows程序进入下图界面 2.输入 取时间间隔 3.展开发现这个函数有3个参数 4.第一.二个参数 很简单就是时间我们分别输入 到时间 ("1972年1月15日11时30分15秒") 到时间 ("1973年1月15日11时30分15秒") 5.第三个参数我们输入 1就是取间隔年份的意思 6.我们输入 调试输出 (取时间间隔 (到时间 ("1972年1月15日11时30分15秒")

  • 易语言整数型参数传递详解

    易语言多线程之整数型参数传递 易语言启动线程的时候第二个参数是传递给线程的参数,类型是整数型的,当然传递整数型参数会非常的简单,直接传递就可以了. .版本 2 .支持库 EThread .程序集 窗口程序集1 .程序集变量 线程句柄, 整数型 .子程序 _按钮1_被单击 .局部变量 ptr, 整数型 ptr = 100 启动线程 (&子程序1, ptr, 线程句柄)关闭线程句柄 (线程句柄) 关闭线程句柄 (线程句柄) .子程序 子程序1 .参数 ptr, 整数型 信息框 (到文本 (ptr),

  • 易语言静态局部变量详解

    易语言静态局部变量,是指所在子程序才能调用的静态变量,它最大的特点是子程序退出后,仍然保存上次调用时的值.比如程序执行下象棋,上次还没下完的棋盘还保留着. 首先在程序窗口添加编辑框.画板和按钮,双击按钮进入窗口程序集. "Ctrl+L"新建两个局部变量,将变量分别命名为变1和变2,均为短整数型,变1设置成非静态变量,变2设置成静态变量.区别就是选择静态打勾,非静态不打勾.最后输入内容: 变1 = 变1 + 到数值 (编辑框1.内容) 变2 = 变2 + 到数值 (编辑框1.内容) 画板

  • 易语言二进制知识点详解

    易语言二进制,这个是数值转换操作,我给大家演示,这个比较简单的. 1.打开易语言新建一个windows程序进入下图界面 2.我们输入二进制 () 这个命令 3.我们展开这个命令 发现这个命令只有一个参数 4.我们输入这个参数: "10" 5.我们输入: 调试输出(二进制 ("10")) 6.运行结果: 2 就是把二进制转换成10进制,很简单 以上就是关于易语言二级制的全部知识点内容,感谢大家的阅读和对我们的支持.

  • 易语言字节集参数传递详解

    易语言多线程之字节集参数传递 传递文本可以直接传递文本的指针,但是字节集却不能这样,看下面直接传递字节集指针的代码: .版本 2 .支持库 spec .支持库 EThread .程序集 窗口程序集1 .程序集变量 线程句柄, 整数型 .程序集变量 内存长度, 整数型 .子程序 _按钮1_被单击 .局部变量 data, 字节集 .局部变量 ptr, 整数型 data = { 1 } 内存长度 = 取字节集长度 (data) ptr = 取变量数据地址 (data) 启动线程 (&传递字节集参数,

  • 基于java集合中的一些易混淆的知识点(详解)

    (一) collection和collections 这两者均位于java.util包下,不同的是: collection是一个集合接口,有ListSet等常见的子接口,是集合框架图的第一个节点,,提供了对集合对象进行基本操作的一系列方法. 常见的方法有: boolean add(E e) 往容器中添加元素:int size() 返回collection的元素数:boolean isEmpty() 判断此容器是否为空: boolean contains(Object o) 如果此collecti

  • Spring表达式语言SpEL用法详解

    这篇文章主要介绍了spring表达式语言SpEL用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 (1)spring表达式语言是一个支持运行时查询和操作对象图得我强大表达式语言. (2)语言类似于EL:SpEL使用#{...}作为定界符.所有在大括号中的字符串均被认为是SpEL. (3)SpEL为bean的属性进行动态赋值提供了便利. (4)通过SpEL可以实现: 通过Bean的id对Bean进行引用 调用方法及引用对象的属性 计算表达式

随机推荐