1、 易语言与WIN32 API的使用本人也是个小菜鸟啦。今天写这个,就是为了一下比我还新手的同学参考参考的资料。-基础知识:先来了解一下,什么的动态链接库动态链接库动态链接库英文为DLL,是Dynamic Link Library 的缩写形式,DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个DLL 副本的内容。DLL 是一个包含可由
2、多个程序同时使用的代码和数据的库。 其实你的系统就有很多的动态链接库,例如KERNEL32.DLL UESER32.DLL.再看看,什么是API。API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。 推荐API工具,是易语言自带的API助手,一般在X:ewizardAPI助手如下图,很好用,很强大哦。可以看出,有了API,我们编程的生活是多么的美好,很多函数都不需要我们亲力亲为的去写,只要调用就OK了。然后,我们来看一下
3、数据类型。因为在API中有很多地方使用了结构体(看百度哦),为了对这些结构体进行匹配,所以在易语言中我们也要对他建立相应的数据类型。例如这是C语言的结构体格式SYSTEMTIME Structure The SYSTEMTIME structure has the following form:typedef struct _SYSTEMTIME WORD wYear; WORD wMonth; WORD wDayOfWeek; WORD wDay; WORD wHour; WORD wMinute; WORD wSecond; WORD wMilliseconds; SYSTEMTIME;而
4、我们如果想在易语言中实现他,就可以这样定义.版本2.数据类型 系统时间_, , SYSTEMTIME .成员 年, 短整数型, , , wYear .成员 月, 短整数型, , , wMonth .成员 星期, 短整数型, , , wDayOfWeek .成员 日, 短整数型, , , wDay .成员 小时, 短整数型, , , wHour .成员 分, 短整数型, , , wMinute .成员 秒, 短整数型, , , wSecond.成员 毫秒, 短整数型, , , wMilliseconds你可能会奇怪,我怎么知道什么WORD 是什么类型。OK,这个没关系,易语言API助手他自己为我
5、们建立了匹配的数据类型、如果想知道,自己也可以百度哦。还有一个就是指针。就是易语言参数中的参考和传址,他们两个确保程序修改的变量始终是一个,就是怎么说呢,指针保存的是变量的地址,计算机中的内存都是编址的,就像你家的地址一样,只有找到地址,就可以准确的找到你本人了,而指针就是变量的地址,他可以准确无误的找到变量。但是如果是单纯的变量,每一个形参和实参都是两个变量了,所以你对形参的修改是无法达到对实参的修改的。(PS:形参就是你定义函数时候写的参数,实参就是你调用函数传的参数)PS2:好吧,如果听不明白也没关系。好吧,暂时就说这些知识,如果后面遇到的再说。-1.1 消息框API嗯,今天教大家怎么添
6、加API到易语言中使用,而且用API创建一个比易语言的信息框更加自由的消息框。首先我们在易语言的工作夹上面选到“程序”页面,然后我们在页面上可以肯定“DLL命令”,我们右键,选择插入DLL命令,然后就会跳转到新建API的页面了!然后在DLL定义表(就是打开的那个空白的窗口)右键,选择“新DLL命令”,或者使用组合键CTRL+N键添加。然后在DLL表中添加对应的API函数的库名字(就是属于哪一个动态链接库的dll),库中对应的命令名就是说他的DLL中的函数名称,参数,和返回值。当然了,DLL命令名我们是可以自己更改的(图上写着“DLL命令1”这一栏我们是可以自己定义的)。好,我们给他添加一个AP
7、I消息框。易语言的信息框信息框应该也是封装了API的函数的,只是他把夫窗口句柄默认设置为主窗口,所以我们使用易语言信息框的时候,总是只能在点玩信息框后才能操作窗口。今天我们就做一个可以自己定义父窗口的消息框。我们这次用的的API命令在API小助手找不到,应该开发者觉得不需要吧。好,他没有封装,我们也可以自己搞一个。他的函数原型是:int MessageBox(HWND hWnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT UType); 注意返回值是int,也就是函数前面的类型,int=整数型HWND是句柄类型,我们可以使用整数型代替。LPCTSTR代表易语言中
8、的文本型UINT代表是易语言中的短整数型。既然知道了具体参数和返回值,那么我们就添加吧。我们可以查到,他所属的dll是USER32.DLL,大家可能说“谁知道他在哪里?”,这个很简单,只要你在百度搜函数名,在百度百科是一般会有所属的,如果说属于user32.lib,那么就是属于user32.dll中的。当然,在易语言的API助手中,他也为我们标明了大部分所属DLL文件。就是图上那样写。但是大家可以发现,库文件对应名字我写的是MessageBoxA,不是说MessageBox吗?是的,A代表的是ASCLL版本的,在易语言中的API很多都是使用ASCLL版本的。好,既然函数定义好了,那么使用吧!.
9、版本 2.程序集 窗口程序集1.子程序 _按钮1_被单击.局部变量 MB_OK, 短整数型.局部变量 MB_OKCANCEL, 短整数型MB_OK 0MB_OKCANCEL 1API_消息框 (0, “Hello API!”, “MB”, MB_OKCANCEL)注意,第一个参数如果写0,就是无所属窗口,就是一个非模态对话框,也就是说,这时候你还是可以操作主窗口的,不信你继续点你的按钮。当然,如果你写了某一个窗口句柄,那么这个消息框就是属于指定窗口句柄的了,你可以自己试试用主窗口的句柄的。大家可能有疑问了,我怎么知道第四个参数填什么,当然你可以在百度上知道他参数具体填什么,然后查询他的常量,然后再填如参数就OK了。(PS:这样定义不常量,是变量,只是为了看起来方便,就不用常量了)怎么查常量?我推荐一个工具具体下载地址我就不发了,大家百度一下“WINDOWS API常量查询器”会有很多这样的工具的,也不必说一定要这个!好,这些一通百通的啦,你也可以尝试调用其他的API的。我就找了几个给大家练习的,都是可以在API助手找到的。DeleteFileACopyFileASendMessageA大家都尝试去使用一下吧,很简单了哦!就当作是巩固提高吧!