易语言-黑月入门到中级
头:
其实我很菜,这是个菜鸟看的,大鸟高人们就请飞过,如果您愿意希望能教教偶,谢谢。
无聊写这个教程,我就不细致排版了,您就将就看吧,我会尽量截图的。还有我的文笔
很差。。。
就不废话了,开始吧。。。
要求:
会易模块(*.ec)(只要知道怎么用就行,不用会写。);
会子程序(要知道怎么写和怎么用);
知道 API 是什么(不会用都行,知道是什么就可以了)会基本的控件(如:窗口、按
钮、编辑框。。。。等)。
如果您还不会,那么我推荐您先去了解上面的内容再来看本教程,不然是看不懂的(天
才除外!)
目录:
我们分三步走:
一、使用模块做动态界面;
二、使用资源;
三、编译。
(一)、使用模块做动态界面
一、黑月的安装:
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 语言的 RC
脚本兼容通用,使黑月程序更接近于常规程序。
5、黑月的 DLL 可以使用类似其它语言 DLLMAIN 入口函数(黑月为“Dll 入口函数”),可以
通过 DLL 的模块句柄访问 DLL 的 PE 资源、注入进程、多线程应用等等优点。
那是介绍,看了也不大懂吧?!
我们只要理解它的作用就行了。。。
下面来讲作用:
要了解黑月作用,那就得说说斩月,因为黑月是继斩月后的又一个强大的工具,且它们的目
的是一样的。
目的&原由:许多易友都知道由于易语言编译出来的程序都需要携带大量的支持库,导致即
使是只有一个窗口的空程序,编译出来加上支持库也要 1MB 以上,而且,更为严重的是,
许多杀软误报毒泛滥,许多人都为“报喜”而担忧。这时,易友中的一些高手就做出一个工
具,名叫“斩月”。斩月的作用自然是为了解决这些问题的,而这些问题都是围着易语言支
持库的而产生的,虽然支持库功能强大,是易语言的“宝藏”。但也因为支持库使得易语言
编译的程序肥大,“报喜”率高。
您想想,编译一个“动态库 DLL”,需要带上一个易语言的“动态库 DLL(fne)”,您能不
感觉怪模怪样的吗?编译一个 EXE,一个空窗口一般就 16KB,但易语言需要一个支持库后
就成了 1MB 了。很大吧!而且,如果我们要用其它的扩展支持库呢?比如:我们一个程序
代码中有一个命令是 特殊功能支持库 的 调用子程序(&子程序 1,),而这个支持库的其它
命令我们是没有用,为此我们这个程序就得打包这个支持库了,这样这个程序又得大好几十
KB,或几 M 了(这个决定支持库的大小)。
您再想想,编译后的易语言程序,因为它的 PE 格式(先不用理解什么是 PE)的“特殊”
即使程序加了“壳”(壳:是一种保护 EXE 或 DLL 的加密算法,有一种工具是专门为 EXE
或 DLL 做这种加密的,这种工具叫“加壳程序(工具)”;简要说说,不用深究,这样理解
着就行),破解者也能因为这个“特殊”而能“秒脱”(脱壳(去掉壳的加密算法),秒脱(一
个俗称,就是不用费太大的劲,就能快速的脱壳))。这样的话,本来是用来加密的一种大好
手段就要被抛弃了,当然有能耐的人,可以利用您能耐的计算,做“防破”。
还有一个致命的毛病,就是“报喜”(由以前的误杀名词而来,现在已经成为俗话了),因为
“特殊”杀软较难定位“特征码”(定位特征码:是杀软判断某个文件时候有“毒”的一种
方法),易公司声明是技术落后问题,但“特征码”是目前最有效的一种技术(这里不代表
要说什么,如果您有想法,与我无关),所以杀软就发现“特征码”了,就是支持库,因为
编译器是编译而已,写什么是人说的算,这个世界,什么人都有,有写“黑”的人也不出奇。
而易语言编译出了的东西特点就是“支持库”那就“特征码”了。
介绍一大堆了,说白了斩月和黑月就是为了脱离支持库而生的。
虽然斩月和黑月目的一样,但前面也说了,黑月是继斩月又一强大工具,所以根据进化论
(雅!)、自然规则(才!)黑月是比斩月更强悍了。^_^
三、黑月要点
这是黑月的教程,斩月就不讲了,会了黑月,斩月自然也就学会了(废话)
要黑月之前先要知道下面几点:
1. 先说明黑月只能支持核心库命令,同时支持变体型和对象型(除“创建字体对象”和
“取回字体”之外)。
2. 知道 1 之后,我推荐,大家黑月的时候,把除了核心库以为,把其它扩展支持库都关了,
还有要保留开着黑月支持库(又废话)
3. 黑月支持的命令表(我还是列出来吧,反正是复制而已)
流程控制
-----------------------
如果
如果真