深入“易语言”编程

第八天

今天我们来学习一下有关“自定义数据类型”和“dll命令”的一些知识,如果您能充分掌握我们今天所讲的,那么您将达到编程的一个新的层次。

 

自定义数据类型

什么是“自定义数据类型”?顾名思义,就是用户可以随时在程序中自行定义新的数据类型。自定义数据类型时需要设置数据类型的名称及其成员。数据类型成员各属性的设置方法等同于变量设置时相应属性的设置方法。

双击“程序”中的“自定义数据类型”就可以进入自定义数据类型的界面;

       在工作区点击鼠标右键,弹出菜单选择“新数据类型”;

就可以创建出一个新的数据类型;

       下面让我们来说一下,如何在这个数据类型中加入数据吧。

       首先,“自定义数据类型”的名称是可以随意改变的,在数据类型名下面双击鼠标左键就可以修改名称,我们这里把它改变成为“自定义数据类型”吧;点击鼠标右键,选择“向后插入新行”就可以“自定义数据”;

 

用鼠标右键选择一项创建好的成员,选择删除,就可以删除掉这一项;

成员的类型跟我们以前说过的变量的设置基本相同,可以设置所有基本类型;

自定义数据类型的使用。

在定义后自定义数据类型之后,我们进入工作区,在设置变量的地方,我们选择数据类型,会发现一个新的数据类型,这个数据类型就是您刚才自己创建的那个。

       我们先给这个变量起一个名字,就叫作“变量”吧,我们就可以通过这个自定义的变量在设置您刚才创建的自定义类型数据中的各项的内容;

讲到这里您可能会认为自定义数据类型就是把几个不同的数据类型放到一起,这样如果按照以前调用变量的方法,一个一个调用不也一样吗?如果按照我们以前的使用,确实可以这样,但是等一下我们要讲到的“dll命令”中,就涉及到一个“类”的概念,某些“dll命令”在使用当中,必须调用某几个数据的集合,而不能一项一项调用,就好像某人要买一辆车,您不可能今天买他轮胎,明天买他发动机的道理一样,所以如果想学好我们后面的“dll命令”自定义数据类型的概念必须非常清楚。

 

Dll命令

我们来学习一下有关“dll命令”的一些相关知识吧。那么什么叫“dll”呢?要解释什么叫“dll”,我们先从“API”说起吧。

什么叫“API”?

所谓API就是一种函数,他们包含在一个附加名为DLL的动态链接库文件中。用标准的定义来讲,API就是Windows32位应用程序编程接口,是一系列很复杂的函数,消息和结构,它使编程人员可以用不同类型的编程语言编制出运行在Windows操作系统上的应用程序。

看过了上面的解释,大家应该对“dll”有初步的了解了吧?对!“dll”就是存放“API”的仓库,把不同的“API”放到不同的仓库里面,方便大家使用,所谓“dll命令”就是调用这些仓库中的“API”。

那么在“易语言”是如何使用“dll命令”的呢?

首先在双击“dll命令”;

在工作区选择新建“dll命令”;

创建好之后,我们将要开始定义这个“dll命令”;

由于“dll命令”非常多,具体要使用哪个dll需要查相关资料,我们这里就用“mouse_event”这个“dll命令”做个例子;

Declare Sub mouse_event Lib "user32" Alias "mouse_event" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)

说明

模拟一次鼠标事件

参数表

参数

类型及说明

dwFlags

Long,下述标志的一个组合

MOUSEEVENTF_ABSOLUTE

dxdy指定鼠标坐标系统中的一个绝对位置。在鼠标坐标系统中,屏幕在水平和垂直方向上均匀分割成65535×65535个单元

MOUSEEVENTF_MOVE

移动鼠标

MOUSEEVENTF_LEFTDOWN

模拟鼠标左键按下

MOUSEEVENTF_LEFTUP

模拟鼠标左键抬起

MOUSEEVENTF_RIGHTDOWN

模拟鼠标右键按下

MOUSEEVENTF_RIGHTUP

模拟鼠标右键按下

MOUSEEVENTF_MIDDLEDOWN

模拟鼠标中键按下

MOUSEEVENTF_MIDDLEUP

模拟鼠标中键按下

dx

Long,根据是否指定了MOUSEEVENTF_ABSOLUTE标志,指定水平方向的绝对位置或相对运动

dy

Long,根据是否指定了MOUSEEVENTF_ABSOLUTE标志,指定垂直方向的绝对位置或相对运动

cButtons

Long,未使用

dwExtraInfo

Long,通常未用的一个值。用GetMessageExtraInfo函数可取得这个值。可用的值取决于特定的驱动程序

 

首先第一项填入这个“dll命令”的名称,就是我们要操作他的名字,这个可以根据您的要求自己设置,由于这个dll的效果是移动鼠标,我们就叫他移动鼠标吧。

 Declare Sub mouse_event Lib "user32" Alias "mouse_event" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)”。

这段英文就是对这个dll的解释,其中红色部分为这个dll一般所使用的名称,当然这个您也可以自己改动,蓝色部分为这个dll命令所在的dll库的名称,这个一定不要改动,如果名字变了,您所制定的dll 就无法找到这个库了,绿色部分为这个dll在库中的名称,这个也不要改动,改动了也将找不到,括号内为这个dll所使用的几个参数的名称和类型,这个也可根据您自己的想法改变,但是参数一定不能多,也不能少,位置也不能颠倒。

下面我们来依次填入DLL库文件名;对应的命令名;填入这个dll的几个参数,参数名称也可以起中文名。

在定义dll的时候。一般在“)”之后的一段英文是定义这个dll返回值的类型的,由于这个dll没有返回值,所以这里什么也不填;

这样就定义好了一个“dll命令”;

那么我们怎么使用这个“dll命令”呢?其实使用“dll命令”就和我们以前使用“易语言”的命令方法一样,只不过“易语言”的命令是内部定义好的,而“dll命令”是我们外部自己定义的。

首先要有一个触发事件,我们就画一个按钮,在按钮的被单击触发事件中,使用这个dll;

       由于我们要移动鼠标,第一个参数中的“MOUSEEVENTF_MOVE”值是模拟鼠标活动的数值,我们通过查询,得到MOUSEEVENTF_MOVE=1,所以在第一个参数中填入1

第二个参数填入鼠标要移动到的位置的行坐标,我们这里填100

第三个参数填入鼠标移动到的位置的纵坐标,我们这里填100

第五个和第六个参数这里没有使用到,我们都填0

现在运行程序,点击按钮,看看什么效果吧;

鼠标移动了吧?这就是一个基本的dll调用小例程,您可以举一反三,来使用其它的“dll命令”,我们今天就讲到这里了,明天见!

本章例程