易语言汇编主程序和DLL交换数据字自定义数据类型

DLL自定义数据类型:

.版本 2
 
.数据类型 遇见数据
    .成员 A, 短整数型
    .成员 B, 整数型
    .成员 C, 长整数型
    .成员 D, 逻辑型
    .成员 E, 文本型
    .成员 F, 日期时间型

DLL命令

.版本 2
 
.子程序 dll3, , 公开, 3-文本型
.参数 保存地址, 整数型
.局部变量 A, 遇见数据
 
A.A511
A.B2019
A.C1234567898765
A.D = 真
A.E = “我是DLL里的自定义数据类型的文本型,被主程序调用”
A.F = 取现行时间 ()
交换变量数据_地址交地址ASM (取变量地址_ASM (A), 保存地址)

主程序动态调用DLL源码:

.版本 2
.支持库 spec
 
.子程序 _按钮3_被单击, , , 3-自定义数据类型
.局部变量 A, 遇见数据
.局部变量 地址, 整数型
.局部变量 命令地址, 整数型
.局部变量 参数数据地址, 整数型, , "1"
 
' 1-获取变量地址
地址 = 取变量地址_ASM (A)
' 2-获取函数命令地址
命令地址 = 取DLL命令地址_ASM (dll路径, “dll3”)
' 调用这个函数方法,第二个参数 参数数据地址 是数组,必须转换一下
参数数据地址 [1] = 地址
' 4-调用这个命令方法
调用命令_ASM (命令地址, 参数数据地址, )
调试输出 (A.A)
调试输出 (A.B)
调试输出 (A.C)
调试输出 (A.D)
调试输出 (A.E)
调试输出 (A.F)
编辑框1.加入文本 (到文本 (A.A) + #换行符)
编辑框1.加入文本 (到文本 (A.B) + #换行符)
编辑框1.加入文本 (到文本 (A.C) + #换行符)
编辑框1.加入文本 (到文本 (A.D) + #换行符)
编辑框1.加入文本 (A.E + #换行符)
编辑框1.加入文本 (到文本 (A.F) + #换行符)

主程序静态调用DLL源码:

.版本 2
.支持库 spec
 
.子程序 _按钮3_被单击, , , 3-自定义数据类型
.局部变量 地址, 整数型
.局部变量 A, 遇见数据
 
地址 = 取变量地址_ASM (A)
dll3 (地址)
调试输出 (A.A)
调试输出 (A.B)
调试输出 (A.C)
调试输出 (A.D)
调试输出 (A.E)
调试输出 (A.F)
编辑框1.加入文本 (到文本 (A.A) + #换行符)
编辑框1.加入文本 (到文本 (A.B) + #换行符)
编辑框1.加入文本 (到文本 (A.C) + #换行符)
编辑框1.加入文本 (到文本 (A.D) + #换行符)
编辑框1.加入文本 (A.E + #换行符)
编辑框1.加入文本 (到文本 (A.F) + #换行符)
 
.版本 2
 
.DLL命令 dll3, , "dll.dll", "dll3"
    .参数 保存地址, 整数型

汇编取变量地址:

.版本 2
 
.子程序 取变量地址_ASM, 整数型, , 返回非数组类型的变量地址
.参数 非数组类型的变量, 通用型, 参考, 变量名;注意要为非数组类型的变量
 
置入代码 ({ 139, 69, 8, 201, 194, 4, 0 })
返回 (0)
' mov eax,[ebp+8]
' leave
' retn 4

教程下载:


发布日期:

所属分类: 易语言 标签: