分类
易语言支持库

彗星HTTP支持库1.7(修复句柄泄露BUG)

1.6发布几年了,一直有一个句柄泄露的bug,当请求过万后,无法再创建HTTP请求,导致一直返回空内容。

因为这个HTTP访问不卡UI,所以经常用,今天终于忍不住把这个bug找到帮大佬改了

分类
网络相关源码

WebSocket客户端 不支持WSS

模块基于Widdows SocketAPI,纯源码

源代码复制粘贴了论坛开源的WebsSocket协议核心代码、Websocket(WinHttp版),感谢各位大佬开源。

这是写来自用的,所以很简陋,不过够新手学习了。不支持WSS、也没考虑多线程安全。,之前找遍论坛已有的都太复杂或臃肿,就写了这个顺便学习下WebSocket协议原理。

WebSocket客户端 不支持WSS

分类
易语言例程

易语言程序一键转繁体源码

.版本 2 .支持库 spec .支持库 iext .支持库 iext3 .支持库 ExtMenu .支持库 eAPI .程序集 窗口程序集_启动窗口 .子程序 __启动窗口_创建完毕 组件标题繁体化 (_启动窗口) .子程序 取系统地方, 整数型, , 返回地方ID,中文系统=2052 繁体系统=1028 英文系统=1033 其他的自行查询 返回 (取系统地方ID_ ()) .子程序 窗口_枚举子孙窗口, 整数型, , 用递归方式寻找与指定条件符合的所有下级窗口(包含子窗口以及子窗口的子窗口等)。返回找到的句柄的个数。 .参数 窗口句柄, 整数型, , 欲寻找下级子窗口的窗口句柄。 .参数 处理子程序, 整数型, 可空, 子程序地址,处理找到的窗口句柄,需提供一个整数型参数,用于装载找到的窗口句柄。【参数二和参数三选择其一】 .参数 句柄组, 整数型, 参考 可空 数组, 提供参数时提供数组变量,用于存放找到句柄。需要自行清除旧的数据。 .局部变量 句柄, 整数型 .局部变量 类名, 文本型 .局部变量 标题, 文本型 句柄 = 寻找子窗口_ (窗口句柄, 0, 类名, 标题) ' ============ www.sanye.cx =============-- ’本站收录资源,如有密码,默认解压密码都为:www.sanye.cx ’三叶资源网官方③群:33301895 ' 投稿邮箱:[email protected] ' ============ =====================-- ’专注易语言,按键精灵等编程源码分享的网站 ’三叶资源网收集的软件和源码,大部分为软件作者或网友推荐, ’版权归原作者所有,仅供学习和研究使用。 ’转载本站提供的资源请勿删除本说明文件。 ' 本站提供资源只可供研究使用,请在下载24小时内删除,勿用于商业用途,由此引起一切后果与本站无关。 ' ============ www.sanye.cx =============-- .判断循环首 (句柄 ≠ 0) 处理事件 () .如果真 (是否为空 (处理子程序) = 假) 调用子程序 (处理子程序, , , 句柄) .如果真结束 .如果真 (是否为空 (句柄组) = 假) 加入成员 (句柄组, 句柄) .如果真结束 窗口_枚举子孙窗口 (句柄, 处理子程序, 句柄组) 句柄 = 寻找子窗口_ (窗口句柄, 句柄, 类名, 标题) .判断循环尾 () 返回 (取数组成员数 (句柄组)) .子程序 窗口_窗口是否停止响应, 逻辑型, , 真=窗口假死 假=窗口正常 .参数 句柄, 整数型 返回 (判断窗口假死_ (句柄) ≠ 0) .子程序 转化_gk简体到big5, 文本型 .参数 GBK简体, 文本型 .局部变量 GBK繁体, 文本型 .局部变量 BIG5, 文本型 GBK繁体 = 转化_gbk简体到gbk繁体 (GBK简体) ' ============ www.sanye.cx =============-- ’本站收录资源,如有密码,默认解压密码都为:www.sanye.cx ’三叶资源网官方③群:33301895 ' 投稿邮箱:[email protected] ' ============ =====================-- ’专注易语言,按键精灵等编程源码分享的网站 ’三叶资源网收集的软件和源码,大部分为软件作者或网友推荐, ’版权归原作者所有,仅供学习和研究使用。 ’转载本站提供的资源请勿删除本说明文件。 ' 本站提供资源只可供研究使用,请在下载24小时内删除,勿用于商业用途,由此引起一切后果与本站无关。 ' ============ www.sanye.cx =============-- ' 本源码来自三叶资源网(www.sanye.cx) BIG5 = 转化_gbk繁体到big5 (GBK繁体) 返回 (BIG5) .子程序 转化_gbk繁体到big5, 文本型 .参数 待转换文本, 文本型 .局部变量 len, 整数型, , , 单位: Word .局部变量 Unicode字节集, 字节集 .局部变量 unicode_len .局部变量 结果文本, 文本型 len = 双字节到宽字符_ (936, 0, 待转换文本, -1, { }, 0) Unicode字节集 = 取空白字节集 (len × 2) 双字节到宽字符_ (936, 0, 待转换文本, -1, Unicode字节集, len × 2) unicode_len = 取字节集长度 (Unicode字节集) ÷ 2 len = 宽字符到双字节3_ (950, 0, Unicode字节集, unicode_len, 结果文本, 0, “”, 0) 结果文本 = 取空白文本 (len) 宽字符到双字节3_ (950, 0, Unicode字节集, unicode_len, 结果文本, len, “”, 0) 返回 (结果文本) .子程序 转化_gbk简体到gbk繁体, 文本型 .参数 简体文本, 文本型 .局部变量 文本长度, 整数型 .局部变量 繁体文本, 文本型 文本长度 = 取文本长度 (简体文本) 繁体文本 = 取空白文本 (文本长度) GBK简繁体转换_ (2052, 67108864, 简体文本, 文本长度, 繁体文本, 文本长度) 返回 (繁体文本) .子程序 窗口_置窗口标题, , , ' 本源码来自三叶资源网(www.sanye.cx) .参数 窗口句柄, 整数型 .参数 标题文本, 文本型 置窗口标题_ (窗口句柄, 标题文本) .子程序 组件标题繁体化, , 公开, 在繁体系统下自动将常见窗口组件的标题转为繁体。(在程序启动事件中使用。如果要将菜单繁体化,请提供超级菜单组件) .参数 窗口, 窗口, , 需要繁体化窗口 .局部变量 句柄组, 整数型, , "0" .局部变量 i, 整数型 .局部变量 组件原标题, 文本型 .局部变量 寻找句柄, 整数型 .局部变量 超级列表框, 超级列表框 .局部变量 i1, 整数型 .局部变量 组合框, 组合框 .局部变量 选择夹, 选择夹 .局部变量 工具条, 工具条 .局部变量 状态条, 状态条 .局部变量 卷帘式菜单, 卷帘式菜单 .局部变量 i2, 整数型 .局部变量 超级菜单, 超级菜单 .局部变量 菜单数组, 菜单, , "0" .局部变量 菜单数组2, 菜单, , "0" .局部变量 菜单数组3, 菜单, , "0" .局部变量 选择列表框, 选择列表框 .局部变量 列表框, 列表框 .如果真 (取系统地方 () = 1028) ' 判断是否为繁体系统 ' ----------------常见组件标题繁体化-------------------- 窗口_枚举子孙窗口 (窗口.取窗口句柄 (), , 句柄组) 加入成员 (句柄组, 窗口.取窗口句柄 ()) .计次循环首 (取数组成员数 (句柄组), i) .如果真 (窗口_窗口是否停止响应 (句柄组 [i]) = 假) ' 如果取停止响应的窗口的标题,会导致程序死掉,所以先判断下 组件原标题 = 取窗口标题 (句柄组 [i]) .如果真 (组件原标题 ≠ “”) 窗口_置窗口标题 (句柄组 [i], 转化_gk简体到big5 (组件原标题)) .如果真结束 .如果真结束 .计次循环尾 () ' ----------------------超级列表框列标题繁体化------------------------ 寻找句柄 = 寻找组件 (窗口, “超级列表框”, , , ) .如果真 (寻找句柄 ≠ 0) .计次循环首 (取找到组件数目 (寻找句柄), i) 超级列表框 = 取所找到组件 (寻找句柄, i - 1) .计次循环首 (超级列表框.取列数 (), i1) 组件原标题 = 超级列表框.取列标题 (i1 - 1) .如果真 (组件原标题 ≠ “”) 超级列表框.置列标题 (i1 - 1, 转化_gk简体到big5 (组件原标题)) .如果真结束 .计次循环尾 () .计次循环尾 () 清除组件寻找句柄 (寻找句柄) .如果真结束 ' ----------------------组合框项目繁体化------------------------ 寻找句柄 = 寻找组件 (窗口, “组合框”, , , ) .如果真 (寻找句柄 ≠ 0) .计次循环首 (取找到组件数目 (寻找句柄), i) 组合框 = 取所找到组件 (寻找句柄, i - 1) .计次循环首 (组合框.取项目数 (), i1) 组件原标题 = 组合框.取项目文本 (i1 - 1) .如果真 (组件原标题 ≠ “”) 组合框.置项目文本 (i1 - 1, 转化_gk简体到big5 (组件原标题)) .如果真结束 .计次循环尾 () .计次循环尾 () 清除组件寻找句柄 (寻找句柄) .如果真结束 ' ---------------------选择夹子夹繁体化------------------------------- 寻找句柄 = 寻找组件 (窗口, “选择夹”, , , ) .如果真 (寻找句柄 ≠ 0) .计次循环首 (取找到组件数目 (寻找句柄), i) 选择夹 = 取所找到组件 (寻找句柄, i - 1) .计次循环首 (选择夹.取子夹数目 (), i1) 组件原标题 = 选择夹.取子夹名称 (i1) .如果真 (组件原标题 ≠ “”) 选择夹.置子夹名称 (i1, 转化_gk简体到big5 (组件原标题)) .如果真结束 .计次循环尾 () .计次循环尾 () 清除组件寻找句柄 (寻找句柄) .如果真结束 ' -------------------------工具条按钮繁体化------------------------------------ 寻找句柄 = 寻找组件 (窗口, “工具条”, , , ) .如果真 (寻找句柄 ≠ 0) .计次循环首 (取找到组件数目 (寻找句柄), i) 工具条 = 取所找到组件 (寻找句柄, i - 1) .计次循环首 (工具条.取按钮数 (), i1) 组件原标题 = 工具条.取标题 (i1 - 1) .如果真 (组件原标题 ≠ “”) 工具条.置标题 (i1 - 1, 转化_gk简体到big5 (组件原标题)) .如果真结束 组件原标题 = 工具条.取提示文本 (i1 - 1) .如果真 (组件原标题 ≠ “”) 工具条.置提示文本 (i1 - 1, 转化_gk简体到big5 (组件原标题)) .如果真结束 .计次循环尾 () .计次循环尾 () 清除组件寻找句柄 (寻找句柄) .如果真结束 ' -------------------------状态条繁体化------------------------------------ 寻找句柄 = 寻找组件 (窗口, “状态条”, , , ) .如果真 (寻找句柄 ≠ 0) .计次循环首 (取找到组件数目 (寻找句柄), i) 状态条 = 取所找到组件 (寻找句柄, i - 1) .计次循环首 (状态条.取栏目数 (), i1) 组件原标题 = 状态条.取文本 (i1 - 1) .如果真 (组件原标题 ≠ “”) 状态条.置文本 (i1 - 1, 转化_gk简体到big5 (组件原标题)) .如果真结束 .计次循环尾 () .计次循环尾 () 清除组件寻找句柄 (寻找句柄) .如果真结束 ' -----------------------卷帘菜单标题及项目名称繁体化-------------------- 寻找句柄 = 寻找组件 (窗口, “卷帘式菜单”, , , ) .如果真 (寻找句柄 ≠ 0) .计次循环首 (取找到组件数目 (寻找句柄), i) 卷帘式菜单 = 取所找到组件 (寻找句柄, i - 1) .计次循环首 (卷帘式菜单.取菜单数 (), i1) 组件原标题 = 卷帘式菜单.取菜单名称 (i1 - 1) .如果真 (组件原标题 ≠ “”) 卷帘式菜单.置菜单名称 (i1 - 1, 转化_gk简体到big5 (组件原标题)) .如果真结束 .计次循环首 (卷帘式菜单.取项目数 (i1 - 1), i2) 组件原标题 = 卷帘式菜单.取项目名称 (i2 - 1, i1 - 1) .如果真 (组件原标题 ≠ “”) 卷帘式菜单.置项目名称 (i2 - 1, 转化_gk简体到big5 (组件原标题), i1 - 1) .如果真结束 .计次循环尾 () .计次循环尾 () .计次循环尾 () 清除组件寻找句柄 (寻找句柄) .如果真结束 ' -------------------超级菜单---------------------------- 寻找句柄 = 寻找组件 (窗口, “超级菜单”, , , ) .如果真 (寻找句柄 ≠ 0) .计次循环首 (取找到组件数目 (寻找句柄), i) 超级菜单 = 取所找到组件 (寻找句柄, i - 1) 菜单数组 = 超级菜单.取子菜单 () .判断循环首 (取数组成员数 (菜单数组) ≠ 0) .计次循环首 (取数组成员数 (菜单数组), i1) 组件原标题 = 菜单数组 [i1].标题 .如果真 (组件原标题 ≠ “”) 菜单数组 [i1].标题 = 转化_gk简体到big5 (组件原标题) .如果真结束 菜单数组2 = 超级菜单.取子菜单 (菜单数组 [i1]) .计次循环首 (取数组成员数 (菜单数组2), i2) 加入成员 (菜单数组3, 菜单数组2 [i2]) .计次循环尾 () .计次循环尾 () 菜单数组 = 菜单数组3 清除数组 (菜单数组3) .判断循环尾 () .计次循环尾 () 清除组件寻找句柄 (寻找句柄) .如果真结束 ' -------------------------选择列表框项目繁体化------------------------------------ 寻找句柄 = 寻找组件 (窗口, “选择列表框”, , , ) .如果真 (寻找句柄 ≠ 0) .计次循环首 (取找到组件数目 (寻找句柄), i) 选择列表框 = 取所找到组件 (寻找句柄, i - 1) .计次循环首 (选择列表框.取项目数 (), i1) 组件原标题 = 选择列表框.取项目文本 (i1 - 1) .如果真 (组件原标题 ≠ “”) 选择列表框.置项目文本 (i1 - 1, 转化_gk简体到big5 (组件原标题)) .如果真结束 .计次循环尾 () .计次循环尾 () 清除组件寻找句柄 (寻找句柄) .如果真结束 ' -------------------------列表框项目繁体化------------------------------------ 寻找句柄 = 寻找组件 (窗口, “列表框”, , , ) .如果真 (寻找句柄 ≠ 0) .计次循环首 (取找到组件数目 (寻找句柄), i) 列表框 = 取所找到组件 (寻找句柄, i - 1) .计次循环首 (列表框.取项目数 (), i1) 组件原标题 = 列表框.取项目文本 (i1 - 1) .如果真 (组件原标题 ≠ “”) 列表框.置项目文本 (i1 - 1, 转化_gk简体到big5 (组件原标题)) .如果真结束 .计次循环尾 () .计次循环尾 () 清除组件寻找句柄 (寻找句柄) .如果真结束 .如果真结束
分类
图形图像源码

易语言屏幕取色器(支持任意系统缩放级别)

由于最近在弄自绘界面,经常会在一些软件上取色。本来以前一直都用泪闯天涯的彗星小助手,很方便,但自从用了高分屏+Win10后,如果屏幕显示缩放不是100%,就会出现各种不兼容的问题,比如取色、截图结果都不准。所以就自己写了这个屏幕取色的小工具。

主要原理:

第一步:截取整个屏幕并生成位图图像

需要获取屏幕设备场景(DC)转换为位图,如果用易语言的 快照() 命令在显示缩放不为100%的情况下是无法截取整个屏幕的

第二步:处理鼠标坐标偏差

举例:屏幕最大分辨率1920*1080     在显示缩放125%时,鼠标最大坐标1536*860(好像是),直接用鼠标坐标肯定是不准确的,需要进行转换。

计算方式:鼠标坐标*显示缩放比=最终坐标     比如:1536*1.25=1920

分类
图形图像源码

MUI库_6_19_alpha版(界面自绘模块)

本次更新基本上是全部重写整个模块,引入XML自适应布局,不再使用类作为组件对象,

通过布局文件可以利用基础组件组合成复杂组件

同时我还借助易语言助手写了个界面布局编辑器器,

并且加入模板项目创建功能,可以快速创建自定义模板项目

使用方法见附件里面的demo

附件内容:包括MUI库源码、编辑器插件源码以及所有使用到的模块源码),插件需要易语言助手3.0及以上版本的支持

MUI库_6_19_alpha版(界面自绘模块)

分类
易语言模块源码

BASS 音频输出设备自动切换

目测至今以来易语言相关的所有音乐播放器都没有实现此功能:

当使用任务栏声音设置切换音频输出设备时,播放器自动切换到相应输出设备。

原理并不复杂,我把此功能添加到了了BASS模块里面。

分类
易语言模块源码

易语言从字节集创建鼠标指针对象2.0模块源码

易语言从字节集创建鼠标指针对象2.0模块源码

新版:支持CUR、ICO格式鼠标指针,如果稍加修改可支持任何图片资源

分类
易语言例程

易语言简单的窗口网格布局演示(仅做参考)

之前学习UWP应用开发时,才知道有这种布局方式,将窗口划分为数个格子,每个格子绑定1个或多个组件,这样在改变窗口尺寸时,代码自动对格子中的组件进行调整适应窗口,对于格子的划分可以按照比例进行或者固定值甚至混合使用。单个格子中也可以进行居中、靠边等等多种排列方式调整组件的摆放。

如图:

易语言简单的窗口网格布局演示(仅做参考)1.jpg    

只需要简单几句代码就完成组件的排版

易语言简单的窗口网格布局演示(仅做参考)2.jpg

下面是在我的MUI模块中实际应用效果:

易语言简单的窗口网格布局演示(仅做参考)3.jpg    

原始版还不能实际运用,需要修改,能用的版本需要和我的MUI模块配合,分离出来也用不了所以就不发了

分类
易语言模块源码

BASS库模块,支持读取ID3v2.3源码(半成品)

.版本 2 .支持库 iconv .子程序 取ID3v2标签, ID3v2, 公开, 支持ID3v2.3 .局部变量 p标签, 整数型 .局部变量 标签, 文本型 .局部变量 标签头, 字节集, , , 10 .局部变量 标签尺寸, 整数型 .局部变量 帧尺寸, 整数型 .局部变量 帧标识, 文本型 .局部变量 帧内容, 字节集 .局部变量 标签帧组, 字节集, , , 除去标签头 .局部变量 x, 整数型 .局部变量 x1 .局部变量 ID3v2, ID3v2 .局部变量 计次 p标签 = BASS_ChannelGetTags (实例句柄, #BASS_TAG_ID3) .如果真 (BASS_ErrorGetCode () = #BASS_ERROR_NOTAVAIL) p标签 = BASS_ChannelGetTags (实例句柄, #BASS_TAG_ID3V2) .如果真结束 ' ID3V2.3标签结构 ' 一个标签头 + 多个标签帧 ' 标签头[10]: 类型[3](必须是"ID3") 版本号[1] 副版本号[1] 标志[1](二进制只有3位) 标签大小[4](每个字节最高位为0,不使用 包括标签头和标签帧) 标签头 = 指针到字节集 (p标签, 10) ' 调试输出 (“标签信息”, 字符 (标签头 [1]) + 字符 (标签头 [2]) + 字符 (标签头 [3]), 字符 (标签头 [4]), 字符 (标签头 [5]), 字符 (标签头 [6])) ' 调试输出 (“标签尺寸”, 到整数 (标签头 [7]) × 2097152 + 到整数 (标签头 [8]) × 16384 + 到整数 (标签头 [9]) × 128 + 到整数 (标签头 [10])) 标签尺寸 = 到整数 (标签头 [7]) × 2097152 + 到整数 (标签头 [8]) × 16384 + 到整数 (标签头 [9]) × 128 + 到整数 (标签头 [10]) 标签帧组 = 指针到字节集 (p标签, 标签尺寸) 标签帧组 = 取字节集右边 (标签帧组, 标签尺寸 - 10) ' 标签帧:帧头【10】 内容【不定】 ' 帧头:标识【4】 内容尺寸:【4】(不包括帧头,最小为1) 标志【2】 ' 举例: ' * “帧标识” | “TSSE”(编码设置) | “帧尺寸” | 13 ' * “帧标识” | “APIC”(封面) | “帧尺寸” | 94331 ' * “帧标识” | “COMM”(备注) | “帧尺寸” | 950 ' * “帧标识” | “TALB”(专辑) | “帧尺寸” | 37 ' * “帧标识” | “TIT1”(内容分组) | “帧尺寸” | ' * “帧标识” | “TIT2”(标题) | “帧尺寸” | 37 ' * “帧标识” | “TIT3”(副标题) | “帧尺寸” | ' * “帧标识” | “TPE1”(作者) | “帧尺寸” | 59 ' * “帧标识” | “TPE2”(乐队) | “帧尺寸” | ' * “帧标识” | “TPE3”(指挥) | “帧尺寸” | ' * “帧标识” | “TPE4”(Remix) | “帧尺寸” | ' * “帧标识” | “TRCK”(音轨) | “帧尺寸” | 5 ' * “帧标识” | “TYER”(年代) | “帧尺寸” | x = 1 .循环判断首 () 帧标识 = 字符 (标签帧组 [x]) + 字符 (标签帧组 [x + 1]) + 字符 (标签帧组 [x + 2]) + 字符 (标签帧组 [x + 3]) 帧尺寸 = 到整数 (标签帧组 [x + 4]) × 16777216 + 到整数 (标签帧组 [x + 5]) × 65536 + 到整数 (标签帧组 [x + 6]) × 256 + 到整数 (标签帧组 [x + 7]) .如果真 (帧标识 ≠ “”) 帧内容 = 取字节集中间 (标签帧组, x + 10, 帧尺寸) .判断开始 (帧标识 = “TIT2”) ' 帧内容 [1] = 0 表示ISO-8859-1编码 = 1 表示Unicode编码 .判断开始 (帧内容 [1] = 0) .计次循环首 (帧尺寸 - 3, 计次) ID3v2.标题 = ID3v2.标题 + 字符 (帧内容 [计次 + 3]) .计次循环尾 () .判断 (帧内容 [1] = 1) ID3v2.标题 = 到文本 (编码转换 (取字节集右边 (帧内容, 帧尺寸 - 1), #编码_UTF_16, #编码_GB2312, )) .默认 .判断结束 .判断 (帧标识 = “TPE1”) .判断开始 (帧内容 [1] = 0) .计次循环首 (帧尺寸 - 3, 计次) ID3v2.作者 = ID3v2.作者 + 字符 (帧内容 [计次 + 3]) .计次循环尾 () .判断 (帧内容 [1] = 1) ID3v2.作者 = 到文本 (编码转换 (取字节集右边 (帧内容, 帧尺寸 - 1), #编码_UTF_16, #编码_GB2312, )) .默认 .判断结束 .判断 (帧标识 = “TALB”) .判断开始 (帧内容 [1] = 0) .计次循环首 (帧尺寸 - 3, 计次) ID3v2.专辑 = ID3v2.专辑 + 字符 (帧内容 [计次 + 3]) .计次循环尾 () .判断 (帧内容 [1] = 1) ID3v2.专辑 = 到文本 (编码转换 (取字节集右边 (帧内容, 帧尺寸 - 1), #编码_UTF_16, #编码_GB2312, )) .默认 .判断结束 .判断 (帧标识 = “APIC”) ' 音乐封面 ' 封面数据结构: 编码格式【1】 MIME类型【不定】 图片类型【1】 数据描述段【不定】 真实图片数据【剩余长度】 .判断开始 (到整数 (帧内容 [1]) = 0) x1 = 2 取字节集数据 (帧内容, #文本型, x1) ' MIME类型 C++中用strlen计算长度 取字节集数据 (帧内容, #文本型, x1) .判断 (到整数 (帧内容 [1]) = 1) ' Unicode编码 ' 未完成 .默认 .判断结束 ID3v2.封面 = 取字节集右边 (帧内容, 帧尺寸 - x1 + 1) .判断 (帧标识 = “TYER”) .判断开始 (帧内容 [1] = 0) .计次循环首 (帧尺寸 - 3, 计次) ID3v2.年代 = ID3v2.年代 + 字符 (帧内容 [计次 + 3]) .计次循环尾 () .判断 (帧内容 [1] = 1) ID3v2.年代 = 到文本 (编码转换 (取字节集右边 (帧内容, 帧尺寸 - 1), #编码_UTF_16, #编码_GB2312, )) .默认 .判断结束 .判断 (帧标识 = “TRCK”) .判断开始 (帧内容 [1] = 0) .计次循环首 (帧尺寸 - 3, 计次) ID3v2.音轨 = ID3v2.音轨 + 字符 (帧内容 [计次 + 3]) .计次循环尾 () .判断 (帧内容 [1] = 1) ID3v2.音轨 = 到文本 (编码转换 (取字节集右边 (帧内容, 帧尺寸 - 1), #编码_UTF_16, #编码_GB2312, )) .默认 .判断结束 .判断 (帧标识 = “COMM”) .判断开始 (帧内容 [1] = 0) .计次循环首 (帧尺寸 - 3, 计次) ID3v2.备注 = ID3v2.备注 + 字符 (帧内容 [计次 + 3]) .计次循环尾 () .判断 (帧内容 [1] = 1) ID3v2.备注 = 到文本 (编码转换 (取字节集右边 (帧内容, 帧尺寸 - 1), #编码_UTF_16, #编码_GB2312, )) .默认 .判断结束 .默认 .判断结束 .如果真结束 ' 位置跳到下一帧 x = x + 10 + 帧尺寸 .循环判断尾 (x + 10 ≤ 标签尺寸 - 10) 返回 (ID3v2)
分类
图形图像源码

MUI自绘界面库10_27更新

MUI自绘界面库10_27更新

MUI自绘界面库10_27更新