当前位置:文档之家› 易语言核心编程综述

易语言核心编程综述

第一章:概述第一节 windows核心编程简介作者:wise☆man联系方式:E-mail: w757029770@QQ:757029770WGhai ID:wang7807564……简介:易语言核心编程,版权所有!第一节:易语言中API的应用概述:API是指应用程序编程接口,是win32平台为我们提供的一大批的应用函数,利用API可以完善程序,增强功能。

API是英文Application Programming Interface的缩写。

在win核心编程中,用到API的频率很多。

要想真正用好API还得有C++编程基础才行!第二节:学习C++的消息概述:什么是消息?windows在系统工作中,都会传达不同的消息。

如:WM_COMMAND消息,当系统中有按钮(或菜单等)被单击,就会传达此消息给窗口,窗口就会作出相应的反应。

消息的组成:包括消息值和两个参数(WPARAM,LPARAM)例如当菜单转中之后会有WM_COMMAND消息发送,WPARAM的高字中(wParam)是命令的ID号,对菜单来讲就是菜单ID。

投递消息:使用API函数:SendMessage 或 PostMessage更多的应用,我们会在后面遇到。

第三节:句柄(Handle)句柄,就是一个项目的标志,这些项目包括:★模块(module)★任务(task)★实例(instance)★文件(file)★内存块(block of memory)★菜单(menu)★控制(control)★字体(font)★资源(resource),包括图标(icon),光标(cursor),字符串(string)等★GDI对象(GDI object),包括位图(bitmap),画刷(brush),元文件(metafile),调色板(palette),画笔(pen),区域(region),以及设备描述表(device context)。

句柄在WIN核心编程中扮演着重要的角色,可以说在同一个项目里,句柄是唯一的,这就好比进程的PID一样。

如何应用好句柄是十分重要的,如:我们在操作进程的时候经常会用到OpenProcess(API命令)函数,这个函数返回的就是一个进程的句柄。

在C++中,句柄的数据类型是HWND 在易语言中是整数型。

第四节:指针指针在C语言和汇编中使用广泛,在易语言中,也得到很好的体现。

指针指向一个内存地址或中央处理器中寄存器。

(作为常识了解)我们在易语言中就可以看到这样的现象:我们可以看到操作符&,这是一个类似于特征一样的符号,代表是一种引用。

那么,我们说指针在易语言中一般只应用到子程序指针方面,它的数据类型是子程序指针在C++中,数据类型为:无符号整型(unsigned int)总结☆在第二章的学习中,我们知道了很多的常识:API、消息、指针、句柄等★应用:①SendMessage(hwnd,WM_CLOSE,0,0)'WM_CLOSE的消息值为16补充知识1:WM_CLOSE这类的在C++中叫做宏,在易语言中为整数型常量。

②执行子程序(&子程序1)‘可以不输入参数,建议这个子程序无参数,如:应用: .版本 2.子程序子程序1信息框(“^_^”, 0, “OK!”)③一言半句说不清,建议大家多看看例程。

第三章相关技术API之取鼠标所在窗口句柄备注:第一个API例程,一句话搞定!还记得易语言为我们提供了一个命令:取鼠标所在窗口句柄()吗? 我们现在用API搞定(API声明不用给了吧)!代码: .版本 2.局部变量point, POINTGetCursorPos (point)‘取点坐标输出调试文本(WindowFromPoint (point.X, point.Y))'测试一下效果第三章相关技术ASCII码:多的不说里,在WIN编程中很重要,在C中应用更广,见表:下表列出了字符集中的 0 - 127。

下表列出了字符集中的 128 - 255。

备注:数值 8、9、10 和 13 可以分别转换为退格符、制表符、换行符和回车符。

这些字符都没有图形表示,但是对于不同的应用程序,这些字符可能会影响文本的显示效果。

"空" 表示在当前平台上不支持的字符。

我们在备注看到,数值13代表回车符那么我们说 #回车键的常量数值也是13,那么你想到了什么?不错,回车对应的ASCII码是13,在易语言中得到应用了吧?[更多详细内容我们慢慢讲。

]第三章相关技术位运算为了更为直观,本文以易语言为例,vc++为辅。

首先了解一下位运算的几个命令(以下备用):易语言 vc++位或 (, ) |位与 (, ) &位取反 () ~位异或 (, ) ^右移 (, ) >>左移 (, ) <<合并整数 (, )合并短整数 (, )好,现在开始说说什么是位运算:我们都知道程序中的所有数在计算机内存中都是以二进制的形式储存的,计算机位运算就是以“二进制位”为基础进行逐位运算。

废话不多说,实例开始:左移:vc++方式:a<<=1;如将 b移x位结果为y表示为: y=2^x*b(^符号代表乘方)反之右移为:y=b÷2^x注意:公式是自己总结的,没有进行严格检查.如果右移出来得小数,那就直接取整得0位取反()这个不用说吧,0变成1,1变成0如:010******* 位取反就是 1010010001注意:是二进制哦位与和位或简易记法:位与(1,1)=1,位与(1,0)=0,位与(0,0)=0,规则为“有0则0”;位或(1,1)=1,位或(1,0)=1,位或(0,0)=0,规则为“有1则1”;详细的再这就说一下:首先明确什么是补码、反码和原码(本空间有介绍)然后按照 10进制数的原码进行简易记法中的计算(好像后面有介绍)位异或位异或(1,1)=0,位异或(1,0)=1,位异或(0,0)=0,位异或(0,1)=1,规则为“同0异1”;好,出示几个例子:vc++例子:#include "iostream.h"void main(){int a=2; //定义一个整型变量 a并赋值为2a^=0; //对a进行位异或运算cout<<a<<endl; //输出一个运算结果a,其值为2,过程如下:/* 2的补码为10 0还是0(前面的一大堆我省略了)按照位异或的原理:同0异1形式如下:10^00= 10(注意:10是二进制的哦)而二进制的10就等于十进制的2所以输出的值是2*//*如果说上面的还没看懂,就看看这种表现形式:十进制二进制备注2 1 0 便于理解,都取两位0 0 0 前面一堆全去掉了↓↓---------→位运算开始1 0 同0,异1(竖排看)2}那么这里输出的数值就是2点击我看原文第三章相关技术匿名管道的应用1、概述:什么是匿名管道:答:匿名管道(Pipe)是指父进程与子进程之间的通讯方式之一。

2、使用到的API函数:CreatePipe 创建匿名管道CloseHandle 关闭句柄,在后面可以用于关闭多余的管道CreateProcessA 创建一个新的进程,可以设置读写管道PeekNamedPipe 查看管道中的数据ReadFile 读文件,该命令可以用于读取管道中的数据3、结构体(自定义数据类型)PROCESS_INFORMATIONSECURITY_ATTRIBUTESSTARTUPINFO4、实现原理:首先,定义一个整型变量hWriteSECURITY_ATTRIBUTES.nLength = 12SECURITY_ATTRIBUTES.lpSecurityDescriptor = 0 SECURITY_ATTRIBUTES.bInheritHandle = 1这里创建管道STARTUPINFO.cb = 68STARTUPINFO.dwFlags =257STARTUPINFO.wShowWindow = 0STARTUPINFO.hStdOutput = hWriteSTARTUPINFO.hStdError = hWrite这里创建出一个新进程,然后用closehandle关闭多余句柄然后就可以读取数据了。

5、补充说明:①怎样创建管道:例如:CreateProcessA(0, “cmd.exe /c ”+一个dos命令, 0, 0, 真, 0, 0, 0, STARTUPINFO, PROCESS_INFORMATION)‘然后就用 CloseHandle 关闭多余句柄CoseHandle(hWrite)'刚才定义的变量,此时是多余的句柄,关闭它!②怎样读取出管道中的数据?step 1:PeekNamedPipe该函数看看管道中是否有数据e.g: PeekNamedPipe (读取句柄, 0, 0, 0, 长度, 0)'两个变量:读取句柄和长度step 2:当管道中有数据时(此处可以加一个判断语句,当长度(上面的变量) <>0 时开始读取数据e.g: 定义几个变量:文本(字节集型),文本=取空白字节集(1024)'推荐使用1024这个值 1024b=1kbReadFile(读取句柄,文本,1023,长度,0)好了得到文本: 到文本(文本)本文出自本人Qzone,原文地址:/757029770/blog/1254274926第三章相关技术总结篇☆在第三章,我们学到了WIN核心编程的相关技术,我们复习总结为:★我们先看看ASCII码的应用:模拟按键(#键A)这个命令我们也可以写为模拟按键(65)因为 A的ASCII码是65,而小写的a的ASCII为97每一个ASCII对应的字符在计算机中都是唯一的★而位运算的应用就更广了:我们在前面的消息中知道,在16位低字中有触发的控件的ID,那么我们在易语言中则样取ID,就可以用位或()[这一点在易语言黑月中应用得很广,这里不做介绍,建议去学学黑月。

]位运算其实就是一种运算方式,和 +-*/没什么区别,不要太神秘化了!第一节汇编常识汇编语言是一种面向机器的语言。

汇编语言中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。

这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。

于是汇编语言亦称为符号语言。

(这段引自百度百科)而汇编是不可以直接被机器所识别的。

我们刚才说到了,汇编语言只是把难记的机器语言用符号来表示,那么就得用程序把这个符号再给转换回机器语言。

我们可以这样认为:汇编语言就是机器语言的一种简化。

好了,先认识到这里,我们在下一节将认识一些简单的汇编指令。

相关主题