路径:支持库 → 基础支持库 → DLL支持。
硬约束
- 扁平命令;地址一律用 长整数 / 整数 传递,没有「指针类型」关键字。
- WinAPI 的
int*(32 位出参)用DLL_整数指针32+DLL_读整数指针32,不要用DLL_整数指针(那是 64 位变量址)。 DLL_文本指针W/A返回的是临时缓冲地址,请在同一次 DLL 调用中使用。- 工程位数必须与 DLL 一致;失败立刻看
DLL_取错误()。 - 完整边界对照见 指针/DLL 手册;
.yp声明见 dllapi。
快速开始
长整数 u = 加载DLL("user32.dll")
长整数 fn = 取导出函数(u, "MessageBoxW")
调用函数Ex(fn, 0, DLL_文本指针W("内容"), DLL_文本指针W("标题"), 0)
释放DLL(u)
DLL支持
本分类共 41 条。
DLL_内存加载
- 签名:
逻辑 DLL_内存加载(文本 DLL资源路径, [文本 注册名称=""]) - 说明:把嵌入 EXE 的资源 DLL 映射到进程内存(不落盘主 DLL)。
- 参数一│DLL资源路径: 如 :/dll/TrailDLL.dll
- 参数二│[注册名称]: 默认取文件名
DLL_写出
- 签名:
逻辑 DLL_写出(文本 源, 文本 写出路径, [逻辑 覆盖=真], [逻辑 自动创建目录=真], [逻辑 校验内容=真]) - 说明:把嵌入资源或磁盘 DLL 写到目标路径(临时文件+原子替换)。
- 参数一│DLL名或资源路径
- 参数二│写出路径
- 参数三│[覆盖=真]
- 参数四│[自动创建目录=真]
- 参数五│[校验内容=真]
DLL_写整数
- 签名:
逻辑 DLL_写整数(整数 指针, 整数 值, [整数 字节数=4]) - 说明:向地址写整数。
- 参数一│指针
- 参数二│值
- 参数三│[字节数=4]: 1/2/4/8
DLL_写文本A
- 签名:
逻辑 DLL_写文本A(整数 指针, 文本 内容, [整数 最大字节数=0], [整数 代码页=0]) - 说明:按代码页写入窄文本。0=系统 ACP,65001=UTF-8。
- 参数一│指针
- 参数二│内容
- 参数三│[最大字节数=0]
- 参数四│[代码页=0]
DLL_写文本W
- 签名:
逻辑 DLL_写文本W(整数 指针, 文本 内容, [整数 最大字符数=0]) - 说明:写入 Unicode 文本。
- 参数一│指针
- 参数二│内容
- 参数三│[最大字符数=0]
DLL_创建整数缓冲区
- 签名:
通用 DLL_创建整数缓冲区([整数 初始值=0], [整数 字节数=4]) - 说明:创建可传给 DLL_调用 的整数输出缓冲区。
- 参数一│[初始值=0]
- 参数二│[字节数=4]
DLL_创建文本缓冲区A
- 签名:
通用 DLL_创建文本缓冲区A([文本 初始文本=""], [整数 最大字节数=260], [整数 代码页=0]) - 说明:创建窄文本缓冲区对象。
- 参数一│[初始文本=”“]
- 参数二│[最大字节数=260]
- 参数三│[代码页=0]
DLL_创建文本缓冲区W
- 签名:
通用 DLL_创建文本缓冲区W([文本 初始文本=""], [整数 最大字符数=260]) - 说明:创建 Unicode 文本缓冲区对象。
- 参数一│[初始文本=”“]
- 参数二│[最大字符数=260]
DLL_参数
- 签名:
通用 DLL_参数(文本 类型, 通用 值, [整数 代码页=0]) - 说明:包装 DLL 参数类型(文本W/A、整数指针、地址、.yt 名等)。
- 参数一│类型: 文本W/文本A/utf8/整数指针/地址/…
- 参数二│值
- 参数三│[代码页=0]
DLL_取缓冲区指针
- 签名:
整数 DLL_取缓冲区指针(通用 缓冲) - 说明:取安全缓冲区底层地址。
- 参数一│缓冲
DLL_取错误
- 签名:
文本 DLL_取错误() - 说明:最近一次 DLL 支持库错误信息。
DLL_回调
- 签名:
通用 DLL_回调(子程序指针 回调, [文本 约定="stdcall"]) - 说明:包装回调地址并指定 cdecl/stdcall。通常直接传 &函数名 即可。
- 参数一│回调: 如 &热键回调(子程序指针)
- 参数二│[约定=stdcall]
DLL_填充内存
- 签名:
逻辑 DLL_填充内存(整数 指针, 整数 字节值, 整数 字节数) - 说明:按字节填充内存。
- 参数一│指针
- 参数二│字节值
- 参数三│字节数
DLL_字节集指针
- 签名:
长整数 DLL_字节集指针(字节集 变量) - 说明:取字节集缓冲首地址,专供 DLL 入参/出参。
- 参数一│变量: 字节集变量
DLL_整数指针
- 签名:
长整数 DLL_整数指针(整数 变量) - 说明:取整数变量地址(Y++ 整数为 64 位)。WinAPI 的 int* 请用 DLL_整数指针32。
- 参数一│变量: 整数变量
DLL_整数指针32
- 签名:
长整数 DLL_整数指针32([整数 初值=0]) - 说明:准备 WinAPI int* 出参:TLS 环形 int32,写入初值后返回地址。
- 参数一│初值: 写入缓冲的初始整数(可省略)
DLL_文本指针A
- 签名:
长整数 DLL_文本指针A(文本 文本) - 说明:把文本转为 UTF-8 窄串并返回地址。
- 参数一│文本: 源文本
DLL_文本指针W
- 签名:
长整数 DLL_文本指针W(文本 文本) - 说明:取文本的宽字符缓冲区地址(LPCWSTR)。
- 参数一│文本: 宽字符文本
DLL_申请内存
- 签名:
整数 DLL_申请内存(整数 字节数) - 说明:申请进程堆内存,返回地址。
- 参数一│字节数
DLL_读整数
- 签名:
整数 DLL_读整数(整数 指针, [整数 字节数=4]) - 说明:从地址读整数。
- 参数一│指针
- 参数二│[字节数=4]
DLL_读整数指针32
- 签名:
整数 DLL_读整数指针32(长整数 指针) - 说明:读回 DLL_整数指针32 返回的 int* 当前值。
- 参数一│指针: DLL_整数指针32 的返回值
DLL_读文本A
- 签名:
文本 DLL_读文本A(整数 指针, [整数 最大字节数=0], [整数 代码页=0]) - 说明:按代码页读取窄文本。
- 参数一│指针
- 参数二│[最大字节数=0]
- 参数三│[代码页=0]
DLL_读文本W
- 签名:
文本 DLL_读文本W(整数 指针, [整数 最大字符数=0]) - 说明:读取 Unicode 文本。
- 参数一│指针
- 参数二│[最大字符数=0]
DLL_读缓冲区整数
- 签名:
整数 DLL_读缓冲区整数(通用 缓冲, [整数 字节数=4]) - 说明:从整数缓冲区读值。
- 参数一│缓冲
- 参数二│[字节数=4]
DLL_读缓冲区文本A
- 签名:
文本 DLL_读缓冲区文本A(通用 缓冲, [整数 最大字节数=0], [整数 代码页=0]) - 说明:从文本缓冲区A读 Y++ 文本。
- 参数一│缓冲
- 参数二│[最大字节数=0]
- 参数三│[代码页=0]
DLL_读缓冲区文本W
- 签名:
文本 DLL_读缓冲区文本W(通用 缓冲, [整数 最大字符数=0]) - 说明:从文本缓冲区W读 Y++ 文本。
- 参数一│缓冲
- 参数二│[最大字符数=0]
DLL_调用
- 签名:
通用 DLL_调用(文本 DLL文件, 文本 函数名, [文本 调用约定="winapi"], [文本 返回类型="通用"], ...) - 说明:通用 DLL 导出调用入口。
- 参数一│DLL文件
- 参数二│函数名
- 参数三│[调用约定=winapi]
- 参数四│[返回类型=通用]
- 参数五│…参数
DLL_调用数组
- 签名:
通用 DLL_调用数组(文本 DLL文件, 文本 函数名, [文本 约定="winapi"], [文本 返回类型="通用"], 数组 参数) - 说明:用数组组织参数后调用 DLL。
- 参数一│DLL文件
- 参数二│函数名
- 参数三│[约定=winapi]
- 参数四│[返回类型=通用]
- 参数五│参数数组
DLL_调用整数
- 签名:
整数 DLL_调用整数(文本 DLL文件, 文本 函数名, [文本 调用约定="winapi"], ...) - 说明:DLL_调用 的整数返回简化版。
- 参数一│DLL文件
- 参数二│函数名
- 参数三│[约定=winapi]
- 参数四│…
DLL_调用整数数组
- 签名:
整数 DLL_调用整数数组(文本 DLL文件, 文本 函数名, [文本 约定="winapi"], 数组 参数) - 说明:数组参数 + 整数返回。
- 参数一│DLL文件
- 参数二│函数名
- 参数三│[约定=winapi]
- 参数四│参数数组
DLL_调用文本
- 签名:
文本 DLL_调用文本(文本 DLL文件, 文本 函数名, [文本 调用约定="winapi"], ...) - 说明:调用返回文本地址的导出并读为 Y++ 文本。
- 参数一│DLL文件
- 参数二│函数名
- 参数三│[约定=winapi]
- 参数四│…
DLL_调用文本数组
- 签名:
文本 DLL_调用文本数组(文本 DLL文件, 文本 函数名, [文本 约定="winapi"], 数组 参数) - 说明:数组参数 + 文本返回。
- 参数一│DLL文件
- 参数二│函数名
- 参数三│[约定=winapi]
- 参数四│参数数组
DLL_释放内存
- 签名:
无 DLL_释放内存(整数 指针) - 说明:释放 DLL_申请内存 得到的地址。
- 参数一│指针
DLL_释放缓冲区
- 签名:
逻辑 DLL_释放缓冲区(通用 缓冲) - 说明:释放安全缓冲区。
- 参数一│缓冲
FreeLibrary
- 签名:
逻辑 FreeLibrary(长整数 模块) - 说明:同「释放DLL」。
- 参数一│模块
LoadLibrary
- 签名:
长整数 LoadLibrary(文本 路径) - 说明:同「加载DLL」。
- 参数一│路径
加载DLL
- 签名:
长整数 加载DLL(文本 路径) - 说明:LoadLibrary:加载 DLL,返回模块句柄(长整数)。
- 参数一│路径: 如 user32.dll 或完整路径
取导出函数
- 签名:
长整数 取导出函数(长整数 模块, 文本 导出名) - 说明:GetProcAddress:取导出函数入口地址。
- 参数一│模块: LoadLibrary/内存加载句柄
- 参数二│导出名: 如 MessageBoxW
置DLL约定
- 签名:
逻辑 置DLL约定(文本 注册名称, 文本 约定) - 说明:为注册名称设置默认调用约定:winapi/stdcall/cdecl。
- 参数一│注册名称
- 参数二│约定
调用函数Ex
- 签名:
通用 调用函数Ex(通用 函数名或地址, ...) - 说明:扩展动态调用:按 Y++ 函数名或原生函数地址调用(最多约 16 参)。裸文本默认 ACP;宽/UTF-8 用 DLL_参数。
- 参数一│函数名或地址: 文本函数名,或 LoadLibrary+取导出函数 地址
- 参数二│其余参数: 可用 DLL_参数 / &回调 / 缓冲区
释放DLL
- 签名:
逻辑 释放DLL(长整数 模块) - 说明:FreeLibrary:释放由加载DLL/内存加载得到的模块。
- 参数一│模块: 模块句柄
易错对照
| 错误 | 正确 |
|---|---|
| 用 DLL_整数指针 当 Win int* | 改用 DLL_整数指针32 + 读回 |
| 取文本指针地址 当 LPCWSTR | 用 DLL_文本指针W 或 .yp 文本 |
| 加载后不看 DLL_取错误 | 失败立刻查错误文本 |
| x86 进程加载 x64 DLL | 工程位数与 DLL 一致 |
相关
指针/DLL 手册 · DLL 声明(.yp) · 指针操作 · 第三方 DLL