第14课 易语言汇编Call动态调用dll及子程序

易语言汇编Call动态调用dll及子程序教程源码:

.版本 2
.支持库 spec

.子程序 _按钮5_被单击, , , 求和--CALL
.局部变量 返回值
.局部变量 模块句柄
.局部变量 函数地址

函数地址 = 装载DLL (取运行目录 () + “\dll.dll”, “add”, 模块句柄)
.如果真 (模块句柄 ≠ -1)
调用DLL (函数地址, , 返回值, 到整数 (编辑框1.内容), 到整数 (编辑框2.内容), 到整数 (编辑框3.内容), , , , , , , , , , , , )
信息框 (返回值, 0, , )

.如果真结束

释放DLL (模块句柄)

.子程序 _按钮6_被单击, , , 求差-call
.局部变量 返回值
.局部变量 模块句柄
.局部变量 函数地址

函数地址 = 装载DLL (取运行目录 () + “\dll.dll”, “sub”, 模块句柄)
.如果真 (模块句柄 ≠ -1)
调用子程序 (函数地址, , 返回值, 到整数 (编辑框1.内容), 到整数 (编辑框2.内容))
调用DLL (函数地址, , 返回值, 到整数 (编辑框1.内容), 到整数 (编辑框2.内容), , , , , , , , , , , , , )

信息框 (返回值, 0, , )
.如果真结束

释放DLL (模块句柄)

.子程序 _按钮7_被单击, , , 传递文本-call
.局部变量 Dhwnd
.局部变量 函数地址
.局部变量 文本, 文本型

函数地址 = 装载DLL (取运行目录 () + “\dll.dll”, “mybox”, Dhwnd)
.如果真 (Dhwnd ≠ -1)
文本 = “我是程序里的文本,传递到DLL的参数里的。”
调用DLL (函数地址, , , 取变量数据地址 (文本), , , , , , , , , , , , , , )

.如果真结束

释放DLL (Dhwnd)

.子程序 _按钮8_被单击, , , 取DLL文本-call
.局部变量 Dhwnd
.局部变量 函数地址
.局部变量 返回值, 整数型

函数地址 = 装载DLL (取运行目录 () + “\dll.dll”, “myboxT”, Dhwnd)
.如果真 (Dhwnd ≠ -1)
调用DLL (函数地址, , 返回值, , , , , , , , , , , , , , , )
信息框 (指针到文本 (返回值), 0, , )

.如果真结束

释放DLL (Dhwnd)

动态Call调用源码:

.版本 2

.子程序 调用DLL, 整数型, 公开, 支持多个参数,第一个参数未:载入DLL时,获得的DLL函数指针
.参数 子程序地址, 整数型, , 可以为_CDECL和_stdcall
.参数 缓存区1, 整数型, 参考 可空, 一定要为参考,无需输入,为缓冲区(用来备份堆栈,以方便平衡栈)
.参数 缓存区或返回值, 整数型, 参考 可空, 一定要为参考,无需输入,为缓冲区(用来备份EAX,以方便返回内容,如果在此处填写变量地址则改变量会变为调用子程序的返回值)
.参数 参数1, 整数型, 可空
.参数 参数2, 整数型, 可空
.参数 参数3, 整数型, 可空
.参数 参数4, 整数型, 可空
.参数 参数5, 整数型, 可空
.参数 参数6, 整数型, 可空
.参数 参数7, 整数型, 可空
.参数 参数8, 整数型, 可空
.参数 参数9, 整数型, 可空
.参数 参数10, 整数型, 可空
.参数 参数11, 整数型, 可空
.参数 参数12, 整数型, 可空
.参数 参数13, 整数型, 可空
.参数 参数14, 整数型, 可空
.参数 参数15, 整数型, 可空

置入代码 ({ 137, 101, 248, 86, 81, 51, 201, 81, 198, 193, 15, 139, 245, 129, 198, 152, 0, 0, 0, 131, 238, 8, 139, 198, 139, 0, 133, 192, 116, 8, 139, 70, 252, 80, 131, 69, 244, 4, 226, 235, 199, 192, 0, 0, 0, 0, 255, 85, 8, 139, 216, 139, 141, 20, 0, 0, 0, 137, 1, 139, 195, 41, 165, 248, 255, 255, 255, 3, 165, 248, 255, 255, 255, 201, 195 })
返回 (1)


发布日期:

所属分类: 易语言 标签: