可不用声明直接在此输入函数名并调用API函数
一、传入参数规则:
1、null参数不可省略
2、32位整数类型,小于32位的整数、以及枚举类型都可以直接在API参数中写数值。
3、对于任何数值类型的指针(输出参数)一律使用结构体表示,例如double * v 表示为{ double v }
4、数组使用结构体表示
5、所有结构体传给API的都是指针地址,都是输出参数并增加返回值
二、返回值规则:
1、返回值默认为int类型,可用 >>> 0 强制转为无符号数,
2、可以使用[API尾标]改变返回值为其他类型
三、所有可用的【API尾标】:
::Kernel32.ApiNameW() 切换到Unicode版本,字符串UTF8-UTF16双向转换
::Kernel32.ApiNameA() 切换到ANSI版本,字符串不作任何转换
::Kernel32.ApiNameL() 返回值为64位LONG类型
::Kernel32.ApiNameP() 返回值为指针类型
::Kernel32.ApiNameD() 返回值为double浮点数
::Kernel32.ApiNameF() 返回值为float浮点数
::Kernel32.ApiNameB() 返回值为C++中的8位bool类型
注意【尾标】前必须是小写字母
返回当前ANSI代码页
获取参数 @1 指定路径的文件属性,文件不存在返回 -1。
参数 @1 应当使用 io.fullpath 转换为完整路径。
文件属性使用 FILE_ATTRIBUTE 前缀的常量表示。
使用 fsys.attrib 函数获取或修改文件属性更方便。
返回系统默认区域 ID
返回当前用户使用的默认区域语言 ID,
这与系统设置:区域语言 / 格式 一致。
可使用 sys.locale.setUserDefault 函数修改此设置
一些API返回的内存句柄需要使用此函数释放,
@hMem参数指定内存句柄
复制内存
此函数支持所有API兼容指针类型参数,直接操作内存请小心使用
源数据可以是字符串、内存指针、或结构体
设置加载DLL的默认目录
恢复DLL默认搜索目录
显示所有系统错误对话框
声明Kernel32 API函数
返回句柄
可不用声明直接在此输入函数名并调用API函数
一、传入参数规则:
1、null参数不可省略
2、32位整数类型,小于32位的整数、以及枚举类型都可以直接在API参数中写数值。
3、对于任何数值类型的指针(输出参数)一律使用结构体表示,例如double * v 表示为{ double v }
4、数组使用结构体表示
5、所有结构体传给API的都是指针地址,都是输出参数并增加返回值
二、返回值规则:
1、返回值默认为int类型,可用 >>> 0 强制转为无符号数,
2、可以使用[API尾标]改变返回值为其他类型
三、所有可用的【API尾标】:
::User32.ApiNameW() 切换到Unicode版本,字符串UTF8-UTF16双向转换
::User32.ApiNameA() 切换到ANSI版本,字符串不作任何转换
::User32.ApiNameL() 返回值为64位LONG类型
::User32.ApiNameP() 返回值为指针类型
::User32.ApiNameD() 返回值为double浮点数
::User32.ApiNameF() 返回值为float浮点数
::User32.ApiNameB() 返回值为C++中的8位bool类型
注意【尾标】前必须是小写字母
销毁窗口,
参数指定窗口句柄,也就是窗口对象的 hwnd 属性。
销毁窗口不会触发窗口的 onClose 事件,
但会触发 onDestroy 事件
返回鼠标当前位置,参数应当是一个::POINT结构体
成功返回非零值
返回系统系统与数值有关的设置,宽高有关的数值以像素为单位,
参数以 SM 前缀的常量指定要获取的设置索引
返回 @hwnd 参数指定窗口句柄的窗口所在线程 ID,
@pid 如果不为 null 则必须传入结构体 {addr value},
也可以改用 win.getThreadProcessId 函数
通过创建目标窗口线程的消息队列发送消息给目标窗口,不等待返回,
注意消息队列等待处理的消息超过 10000 条消息时将会丢弃消息
通过消息队列发送消息给目标窗口,不等待返回。
@hwnd 指定目标窗口句柄,设为 0xFFFF(65535) 则发送到所有顶层窗口。
参数@2为消息ID,一般是 WM 开头的常量。
一定要指定4个参数,省略参数输入null或0不可省略
注意不要在参数中包含在调用函数后可能释放的指针
发送消息到目标窗口,并等待返回,
如果目标窗口卡住,可能导致不必要的等待过程
发送消息到目标窗口,并等待返回。
@hwnd 指定目标窗口句柄,设为 0xFFFF(65535) 则发送到所有顶层窗口。
参数@2为消息ID,一般是 WM 开头的常量。
一定要指定4个参数,省略参数输入null或0不可省略
发送消息到目标窗口,并可设置超时参数
用法请参考该 API 文档
发送消息到目标窗口,
发生到调用线程创建的窗口等待窗口消息处理完消息后返回,
发生到其他线程不等待立即返回。
注意这个函数并非将消息发送到消息队列,
不会因为消息队列满被丢弃
发送消息到目标窗口,
@hwnd 指定目标窗口句柄,设为 0xFFFF(65535) 则发送到所有顶层窗口。
参数@2为消息ID,一般是 WM 开头的常量。
一定要指定4个参数,省略参数输入null或0不可省略
注意不要在参数中包含在调用函数后可能释放的指针,
但对 0xFFFF 发送 _WM_SETTINGCHANGE 消息时可指定字符串参数
设置鼠标当前位置,参数指定x,y坐标
成功返回非零值
设置或获取系统参数,
失败返回0,成功返回非零值,
参数@1指定 SPI 前缀常量,@pvParam 为指针或结构体指针,
其他参数都为无符号32位整数。参数 @4 设为 3 也即
_SPIF_UPDATEINIFILE | _SPIF_SENDWININICHANGE
用于刷新配置,读取值时参数 @4 设为 0 即可
这个函数的设置项非常多,细节请参考该 API 文档
声明Kernel32 API函数
复制内存
此函数调用::Kernel32.RtlMoveMemory
复制结构体到目标内存
此函数调用::Kernel32.RtlMoveMemory
FILETIME 结构体,
用于表示自 1601年1月1日 开始以 100纳秒 为间隔的数值。
100纳秒 也就是 0.0001毫秒。
此结构体包含 2 个 32 无符号位整数字段:dwLowDateTime,dwHighDateTime。
标准库 fsys.time 可创建 ::FILETIME 兼容结构体,
并且提供了更多功能
返回系统错误代码
返回动态链接库的模块句柄
在进程堆上分配内存,
分配选项可选参数如下:
0x40/*_GPTR*/ 返回指针,内存数据初始化为零
0x42/*_GHND*/ 返回句柄,内存数据初始化为零,
0x0/*_GMEM_FIXED*/ 返回指针
0x2/*_GMEM_MOVEABLE*/ 返回句柄
内存句柄需要调用 ::GlobalLock 函数转换为内存指针
释放::GlobalAlloc()分配的内存
如果成功返回null,否则返回传入句柄
锁定::GlobalAlloc(0x2/*_GMEM_MOVEABLE*/)创建的内存句柄,
并返回内存指针指针
改变GlobalAlloc函数申请的内存大小
分配选项参考 GlobalAlloc() 说明
获取内存长度
解锁::GlobalAlloc(0x2/*_GMEM_MOVEABLE*/)创建的内存句柄,
成功返回true
function(l) {return (l >> 8) & 0xff }
function(l) {return (l >> 16) & 0xffff }
默认已加载的Kernel32.dll模块对象
Kernel32.dll是Windows内置库,提供很多常用API
function(l) {return l & 0xff }
function(l) {return l & 0xffff }
function(a,b){ return ( ( (b & 0xFFFF) << 16) | (a & 0xFFFF) ) & 0xFFFFFFFF }
function (a,b){ return ( ( ( b & 0xFF) << 8) | ( a & 0xFF) ) & 0xFFFF }
默认已加载的系统DLL组件ntdll.dll
UCRT 运行时,
Windows 10 以及之后的系统已经自带了 UCRT。
加载此 DLL 的代码如下:
::Ucrtbase := ..raw.loadDll("ucrtbase.dll",,"cdecl");
注意等号前必须加冒号。
默认已加载的User32.dll模块对象
User32.dll提供Windows用户界面相关API