本文由229096767贡献
    pdf文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。
    易语言-黑月入门到中级
    : 其实我很菜, 这是个菜鸟看的, 大鸟高人们就请飞过, 如果您愿意希望能教教偶, 谢谢。 无聊写这个教程,我就不细致排版了,您就将就看吧,我会尽量截图的。还有我的文笔 很差。。 就不废话了,开始吧。。 要求: 会易模块(*.ec (只要知道怎么用就行,不用会写。; 会子程序(要知道怎么写和怎么用) 知道 API 是什么(不会用都行,知道是什么就可以了)会基本的控件(如:窗口、按 钮、编辑框。。 。。等) 如果您还不会,那么我推荐您先去了解上面的内容再来看本教程,不然是看不懂的(天 才除外! 目录: l 我们分三步走: l 一、使用模块做动态界面; l 二、使用资源; l 三、编译
    (一) 、使用模块做动态界面
    一、黑月的安装: 1. 在本教程包到:黑月安装程序 1.33.7z 这个文件,打开; 2.
    3. 4.提示正在安装à安装完毕 5.文件安装完毕之后呢就要做一些设置了
    在易编辑器菜单->工具->支持库配置,勾选“黑月编译器插件”支持库,如图:
    如果没有什么意外,就会立即启动并运行黑月工具
    工具菜单出现“黑月工具”和“黑月资源编辑器”菜单选项。
    注意:如果勾选“黑月编译器插件”支持库时,易编辑器出错退出。这说明你的系统不支持黑 月自动加工处理功能。 遇到这种情况请自行编辑配置文件,比如:C:\Program Files\e\BlackMoon\BlackMoon.ini 修改配置内容: [BlackMoon] Run=0 将禁止自动处理功能,这时再重新启动易编辑器,再次勾选“黑月编译器插件”支持库。 但没有自动处理功能很不方便,而且如果要同时编译资源,RC 脚本文件路径和名称也需要 相应变化,这以后再详细了解。 3、关闭自动处理功能和手动选择处理。易编辑器菜单->工具->黑月工具,将出现黑月 的设置窗口,如图:
    “启动黑月编译器”选择框决定是否在易语言生成程序之后,自动处理成黑月程序。如果 关闭,将不自动加工处理成黑月程序,恢复易编辑器原来的状态和功能。如果你的系统不支 持自动处理的,勾选这个功能将导致易编辑器出错。
    关闭开启这个功能,在易编辑器的输出窗口都有提示:
    《以上内容引用易语言官方论坛的大鸟在论坛上的发帖》
    二、什么是黑月 讲了这么久安装,都忘记讲什么是黑月了。。 我就不讲黑月深层的东西了,就讲作用,有兴趣的可以看一下,复制大鸟的帖子内容吧。 大鸟的话:
    黑月是类似于斩月,目的是将易语言程序小型化,脱离支持库运行的工具。但实现原理和方法 又与斩月不同,不需要类似的斩月壳,而是分析并转化易程序为对象文件 obj,再用链接器 LINK.EXE 重新编译链接。这样生成的黑月程序,具有更规范更优化的 PE 程序文件结构,并且带来更多的功能扩 展(比如使用 RC 资源脚本生成 PE 标准资源),以及带来下好处: 1、具有正常的 PE 可执行文件结构,经过反编译后生成的易程序代码清晰可见,完全呈现。 汇编代码可分析可用专用软件跟踪调试,不会再产生误报。 2、在脱离核心支持库的同时,又不废除原有核心库命令,而是转向调用功能类似的黑月核心 库。就是说,黑月可以使用大部分的原核心库命令(非窗口操作),并且黑月核心库为本人模仿原核心 库功能,再重新编写的静态库。由于黑月先天优势,可以静态库抽取代码片段合成编译,就是用到的命 令函数才提取相应部分代码。不用到命令不合成到目标程序。这样的好处是既保持原有功能
不变,又不 使程序文件大小增加,附带冗余代码。 易友们一直梦想的静态库抽取合成编译,今天在黑月已经实现了! (黑月支持的核心库命令看随后的附表) 4、黑月可以使用 PE 标准资源,用 RC 脚本编译生成。比如使用资源对话框模板创建窗口,并 配合可视化的黑月 RC 脚本编辑器,比斩月又多一种更方便的界面设计功能,而且与汇编和 C 语言的 R C 脚本兼容通用,使黑月程序更接近于常规程序。 5、黑月的 DLL 可以使用类似其它语言 DLLMAIN 入口函数(黑月为“Dll 入口函数”),可以 通过 DLL 的模块句柄访问 DLL PE 资源、注入进程、多线程应用等等优点。
    那是介绍,看了也不大懂吧?!
    我们只要理解它的作用就行了。。 下面来讲作用: 要了解黑月作用,那就得说说斩月,因为黑月是继斩月后的又一个强大的工具,且它们的目 的是一样的。 目的&原由:许多易友都知道由于易语言编译出来的程序都需要携带大量的支持库,导致即 使是只有一个窗口的空程序,编译出来加上支持库也要 1MB 以上,而且,更为严重的是, 许多杀软误报毒泛滥,许多人都为“报喜”而担忧。这时,易友中的一些高手就做出一个工 具,名叫“斩月” 。斩月的作用自然是为了解决这些问题的,而这些问题都是围着易语言支 持库的而产生的,虽然
支持库功能强大,是易语言的“宝藏” 。但也因为支持库使得易语言 编译的程序肥大, “报喜”率高。 您想想,编译一个“动态库 DLL ,需要带上一个易语言的“动态库 DLLfne),您能不 感觉怪模怪样的吗?编译一个 EXE,一个空窗口一般就 16KB,但易语言需要一个支持库后 就成了 1MB 了。很大吧!而且,如果我们要用其它的扩展支持库呢?比如:我们一个程序 代码中有一个命令是 特殊功能支持库 调用子程序 &子程序 1,, 而这个支持库的其它 命令我们是没有用, 为此我们这个程序就得打包这个支持库了, 这样这个程序又得大好几十 KB,或几 M 了(这个决定支持库的大小) 您再想想,编译后的易语言程序,因为它的 PE 格式(先不用理解什么是 PE)的“特殊” 即使程序加了“壳” (壳:是一种保护 EXE DLL 的加密算法,有一种工具是专门为 EXE DLL 做这种加密的,这种工具叫“加壳程序(工具);简要说说,不用深究,这样理解 着就行) ,破解者也能因为这个“特殊”而能“秒脱” (脱壳(去掉壳的加密算法) ,秒脱(一 个俗称,就是不用费太大的劲,就能快速的脱壳)。这样的话,本来是用来加密的一种大好 手段就要被抛弃了,当然有能耐的人,可以利用您能耐的计算,做“防破” 还有一个致命的毛病,就是“报喜” (由以前的误杀名词而来,现在已经成为俗话了) ,因为 “特殊”杀软较难定位“特征码” (定位特征码:是杀软判断某个文件时候有“毒”的一种 方法) ,易公司声明是技术落后问题,但“特
征码”是目前最有效的一种技术(这里不代表 要说什么,如果您有想法,与我无关) ,所以杀软就发现“特征码”了,就是支持库,因为 编译器是编译而已,写什么是人说的算,这个世界,什么人都有,有写“黑”的人也不出奇。 而易语言编译出了的东西特点就是“支持库”那就“特征码”了。 介绍一大堆了,说白了斩月和黑月就是为了脱离支持库而生的。 虽然斩月和黑月目的一样,但前面也说了,黑月是继斩月又一强大工具,所以根据进化论 (雅!、自然规则(才! )黑月是比斩月更强悍了。^_^ 三、黑月要点 这是黑月的教程,斩月就不讲了,会了黑月,斩月自然也就学会了(废话) 要黑月之前先要知道下面几点: 1. 先说明黑月只能支持核心库命令, 同时支持变体型和对象型 (除 “创建字体对象” “取 回字体”之外) 2. 知道 1 之后,我推荐,大家黑月的时候,把除了核心库以为,把其它扩展支持库都关了, 还有要保留开着黑月支持库(又废话) 3. 黑月支持的命令表(我还是列出来吧,反正是复制而已) 流程控制 如果 如果真
    判断 判断循环首 判断循环尾 循环判断首 循环判断尾 计次循环首 计次循环尾 变量循环首 变量循环尾 到循环尾 跳出循环 返回 结束 算术运算 相乘 相除 整除 求余数 相加 相减 取符号 取绝对值 取整 绝对取整 四舍五入 求次方 求平方根 求正弦 求余弦 求正切 求反正切 求自然对数 求反对数 置随机数种子 取随机数 逻辑比较 等于 不等于 小于
    大于 小于或等于 大于或等于 近似等于 并且 或者 取反 位运算 位取反 位与 位或 位异或 左移 右移 合并整数 合并短整数 变量操作 赋值 连续赋值 数组操作 重定义数组 取数组成员数 取数组下标 复制数组 加入成员 插入成员 删除成员 清除数组 数组清零 环境存取 取命令行 取运行目录 取执行文件名 读环境变量 写环境变量
    文本操作 取文本长度 取文本左边 取文本右边 取文本中间 字符 取代码 寻文本 倒文本 到大写 到小写 到全角 到半角 到文本 删首空 删尾空 删首尾空 删全部空 文本替换 子文本替换 取空白文本 取重复文本 文本比较 分割文本 指针到文本 字节集操作 取字节集长度 到字节集 取字节集数据 取字节集左边 取字节集右边 取字节集中间 寻字节集 倒字节集 字节集替换 子字节集替换 取空白字节集 取重复字节集 分割字节集 指针到字节集
    数值转换 到数值 数值到大写 数值到金额 数值到格式文本 取十六进制文本 取八进制文本 到字节 到短整数 到整数 到长整数 到小数 时间操作 到时间 增减时间 取时间间隔 动态清零是什么意思取某月天数 时间到文本 取时间部分 取年份 取月份 取日 取星期几 取小时 取分钟 取秒 指定时间 取现行时间 置现行时间 取日期 取时间 磁盘操作 取磁盘总空间 取磁盘剩余空间 取磁盘卷标 置磁盘卷标 改变驱动器 改变目录 取当前目录
    创建目录 删除目录 复制文件 移动文件 删除文件 文件更名 文件是否存在 寻文件 取文件时间 取文件尺寸 取文件属性 置文件属性 取临时文件名 读入文件 写到文件 文件读写 打开文件 打开内存文件 关闭文件 关闭所有文件 锁住文件 解锁文件 移动读写位置 移到文件首 移到文件尾 读入字节集 写出字节集 读入文本 写出文本 读入一行 写文本行 读入数据 写出数据 是否在文件尾 取读写位置 取文件长度 插入字节集 插入文本 插入文本行 删除数据 系统处理
    运行 取剪辑板文本 置剪辑板文本 剪辑板中可有文本 清除剪辑板 取屏幕宽度 取屏幕高度 取鼠标水平位置 取鼠标垂直位置 取颜数 信息框 鸣叫 取启动时间 置等待鼠标 恢复鼠标 延时 取文本注册项 取数值注册项 取字节集注册项 写注册项 删除注册项 注册项是否存在 取默认底 快照 读配置项 写配置项 取配置节名 取操作系统类别 多文件对话框 媒体播放 播放音乐 停止播放 其他 选择 多项选择 是否为空 取数据类型尺寸 取颜值 处理事件
    写到内存 置入代码 网络通信 取主机名 通信测试 转换为主机名 转换为 IP 地址 控制台操作 标准输出 标准输入 四、进入主题(有了前面的铺垫我们就开始了。 因为黑月需要做窗口的话,要写许多代码,且要调用许多基层函数(API ,对大家的入门 不利,这里我就这样来讲,先学动态创建窗口和控件(用“界面库”即一些论坛大大们写的 模块“.ec”,然后就学
使用资源“*.rc ,最后嘛~这个教程的完毕。。 。(老说废话。 (一) 动态创建界面: 1. 在动态创建之前呢,我们先要知道,现今 3 种流行的界面库 第一种 尘土库.界面库(这个效率高) 第二种 斩月(这是最古老的,最先提出斩月的) 第三种 孤岛版斩月(这个是斩月的界面库的增强版) 这些模块(界面库)就会在本教程发表时,同时共享。 2. 我这里呢就用孤岛版的做开头,然后呢就用尘土的,第二种就留给大家自己发掘了。 废话不说了,我们开始了。。 在写代码之前,先要做下面几点: 图比较实际,看图:
    进入以后得马上做这一步,很重要(因为。。不废话了,做就是了! 在菜单里:程序à配置
    后注:上面的版权信息填了也没有用,不会在编译后的程序体现的,具体怎样做到在编 译后的程序体现,后面会有讲到,请往下看。。 3. 学第一个界面库命令 在引用孤岛这个界面库后打开查看,我们发现里面有许多控件对象(类)