开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

楼主: 7ian
收起左侧

[易语言纯源码] 通用型取数据结构尺寸的2种方法【API】

  [复制链接]
结帖率:100% (2/2)
发表于 2024-7-20 12:02:48 | 显示全部楼层   广东省深圳市

回帖奖励 +3 枚 精币

学习一下
回复 支持 反对

使用道具 举报

签到天数: 28 天

发表于 2024-7-20 11:52:29 | 显示全部楼层   安徽省安庆市

回帖奖励 +3 枚 精币

感谢分享~!
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 28 天

发表于 2024-7-20 11:51:35 | 显示全部楼层   山东省德州市

回帖奖励 +3 枚 精币

感谢分享
回复 支持 反对

使用道具 举报

签到天数: 28 天

发表于 2024-7-20 11:49:04 | 显示全部楼层   江苏省无锡市

回帖奖励 +3 枚 精币

谢谢分享  
回复 支持 反对

使用道具 举报

结帖率:45% (9/20)

签到天数: 23 天

发表于 2024-7-20 11:40:22 | 显示全部楼层   广东省佛山市

回帖奖励 +3 枚 精币

666666666666666666666
回复 支持 反对

使用道具 举报

结帖率:100% (7/7)

签到天数: 23 天

发表于 2024-7-20 11:37:29 | 显示全部楼层   湖北省咸宁市
学习一下
回复 支持 反对

使用道具 举报

结帖率:97% (31/32)

签到天数: 26 天

发表于 2024-7-20 11:32:14 | 显示全部楼层   福建省福州市
本帖最后由 cf2006a 于 2024-7-20 11:34 编辑

修改了下 dll 函数地址不能写死,每个人的电脑系统都不一样不是固定的

.版本 2
.支持库 spec

.程序集 程序集1

.子程序 _启动子程序, 整数型, , 本子程序在程序启动后最先执行
.局部变量 数据类型, 数据类型1
.局部变量 类, 类1
.局部变量 数组数据类型, 数据类型1, , "1"
.局部变量 数组类, 类1, , "1"
.局部变量 GlobalSize函数地址, 整数型

' 自定义数据结构/类私有成员 中:
' #字节型 跟 #短整数型 都是4
' 字节集 文本型 自定义数据类型 数组 都是4,因为只存了地址
GlobalSize函数地址 = GetProcAddress (GetModuleHandleA (“kernel32.dll”), “GlobalSize”)
' 取自定义数据类型的尺寸;
调试输出 (“带地址”, 取数据结构尺寸 (数据类型, GlobalSize函数地址))
' 调试输出 (取数据结构尺寸 (数组数据类型 [1]), 取数据结构尺寸2 (数组数据类型 [1]))
调试输出 (LocalSize (数组数据类型 [1]), LocalSize (数组数据类型 [1]))
' 取类的私有成员尺寸 ,返回值要-4
' 调试输出 (取数据结构尺寸 (类) - 4, 取数据结构尺寸2 (类) - 4)
' 调试输出 (取数据结构尺寸 (数组类 [1]) - 4, 取数据结构尺寸2 (数组类 [1]) - 4)
调试输出 (GlobalSize (数组类 [1]) - 4, GlobalSize (数组类 [1]) - 4)
' 核心库的用法只能取单个
调试输出 (取数据类型尺寸 (#字节型), 取数据类型尺寸 (#短整数型))
调试输出 (取数据类型尺寸 (#小数型), 取数据类型尺寸 (#整数型), 取数据类型尺寸 (#逻辑型))
调试输出 (取数据类型尺寸 (#长整数型), 取数据类型尺寸 (#双精度小数型), 取数据类型尺寸 (#日期时间型))

返回 (0)  ' 可以根据您的需要返回任意数值

.子程序 GetProcAddress_汇编, 整数型, 公开
.参数 hModule, 整数型
.参数 lpProcName, 文本型

置入代码 ({ 139, 93, 8, 131, 251, 0, 116, 58, 139, 67, 60, 3, 195, 139, 80, 120, 3, 211, 139, 74, 24, 139, 66, 32, 81, 81, 80, 51, 192, 131, 201, 255, 139, 125, 12, 139, 63, 242, 174, 247, 209, 88, 81, 139, 125, 12, 139, 63, 139, 52, 24, 3, 243, 243, 166, 89, 116, 14, 131, 192, 4, 94, 78, 86, 117, 232, 51, 192, 201, 194, 8, 0, 94, 89, 43, 206, 139, 66, 36, 141, 4, 72, 15, 183, 4, 24, 139, 74, 28, 141, 4, 129, 139, 4, 24, 3, 195, 201, 194, 8, 0 })
返回 (0)

.子程序 取数据结构尺寸, 整数型, 公开, 获取 自定义数据类型的长度 / 类的私有成员长度(返回值要-4) / 数组请用 数组[x] 给一个成员就行;基本类型长度不支持,请用:取数据类型尺寸()
.参数 数据, 通用型, 参考
.参数 dll函数地址, 整数型

' 就是调用dll: LocalSize   by,7ian.541980200
置入代码 ({ 139, 69, 8, 255, 48, 255, 85, 12, 201, 194, 4, 0 })
返回 (0)

.子程序 取数据结构尺寸2, 整数型, 公开, 获取 自定义数据类型的长度 / 类的私有成员长度(返回值要-4) / 数组请用 数组[x] 给一个成员就行;基本类型长度不支持,请用:取数据类型尺寸()
.参数 数据, 通用型, 参考

' 就是调用dll: GlobalSize   by,7ian.541980200
置入代码 ({ 139, 69, 8, 255, 48, 184, 16, 252, 105, 117, 255, 208, 201, 194, 4, 0 })
返回 (0)


.版本 2

.DLL命令 LocalSize, 整数型, "kernel32.dll", "LocalSize", 公开, 获取 自定义数据类型的长度 / 类的私有成员长度(返回值要-4) / 数组请用 数组[x] 给一个成员就行;基本类型长度不支持,请用:取数据类型尺寸()
    .参数 hMem, 通用型, , 任意定义个数据类型

.DLL命令 GlobalSize, 整数型, "kernel32.dll", "GlobalSize", 公开, 获取 自定义数据类型的长度 / 类的私有成员长度(返回值要-4) / 数组请用 数组[x] 给一个成员就行;基本类型长度不支持,请用:取数据类型尺寸()
    .参数 hMem, 通用型, , 任意定义个数据类型

.DLL命令 GetModuleHandleA, 整数型, "kernel32.dll", "GetModuleHandleA", , 取模块句柄
    .参数 lpModuleName, 文本型, , DLL名称

.DLL命令 GetProcAddress, 整数型, "kernel32.dll", "GetProcAddress", , 取动态链接库函数入口地址
    .参数 hModule, 整数型, , 模块句柄
    .参数 lpProcName, 文本型, , 函数名称

点评

功德无量   贵州省毕节市  发表于 2024-7-20 16:02
回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 2024-7-20 11:13:04 | 显示全部楼层   江苏省南京市
支持开源
回复 支持 反对

使用道具 举报

结帖率:97% (31/32)

签到天数: 26 天

发表于 2024-7-20 11:06:20 | 显示全部楼层   福建省福州市

回帖奖励 +3 枚 精币

下个看看!!!!
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)

签到天数: 12 天

发表于 2024-7-20 10:54:06 | 显示全部楼层   贵州省毕节市
WIN7 没有跑起来 不确定是不是汇编里面写死的DLL地址发生变动了???

点评

应该是改了   广东省佛山市  发表于 2024-7-20 11:15
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表