quickwin 1.3.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +18 -24
- package/README.md +17 -23
- package/examples/PdfCanvas.js +8 -37
- package/examples/PdfCanvas.tsx +11 -41
- package/examples/exec_server.js +20155 -1420
- package/examples/exec_server.tsx +489 -0
- package/examples/exec_server_worker.js +383 -33
- package/examples/exec_server_worker.ts +408 -30
- package/examples/pdf_preview2.js +25 -82
- package/examples/pdf_preview2.ts +27 -84
- package/examples/pdf_viewer.js +1424 -1180
- package/examples/pdf_viewer.tsx +16 -67
- package/examples/setres.js +22 -47
- package/examples/setres.ts +23 -57
- package/examples/test_gallery.js +1418 -1075
- package/examples/test_react_lazy.js +1391 -1059
- package/examples/test_react_listbox.js +1390 -1058
- package/examples/test_root_window.js +1384 -1052
- package/examples/test_tab.js +1391 -1059
- package/lib/abort.js +70 -0
- package/lib/abort.ts +69 -0
- package/lib/certs.js +219 -0
- package/lib/certs.ts +229 -0
- package/lib/exec-log.js +15 -0
- package/lib/exec-log.ts +30 -0
- package/lib/fetch.js +88 -7
- package/lib/fetch.ts +73 -7
- package/lib/ffi/bind.js +441 -0
- package/lib/ffi/bind.ts +539 -0
- package/lib/ffi/ctype.js +194 -0
- package/lib/ffi/ctype.ts +369 -0
- package/lib/ffi/index.js +6 -0
- package/lib/ffi/index.ts +6 -0
- package/lib/ffi/struct.js +490 -0
- package/lib/ffi/struct.ts +753 -0
- package/lib/http-common.js +43 -5
- package/lib/http-common.ts +48 -6
- package/lib/http-server.js +187 -29
- package/lib/http-server.ts +177 -26
- package/lib/react-qw/components/DateTimePicker.js +18 -37
- package/lib/react-qw/components/Input.js +3 -10
- package/lib/react-qw/components/Link.js +6 -19
- package/lib/react-qw/components/ListView.js +50 -154
- package/lib/react-qw/components/PathPicker.js +28 -88
- package/lib/react-qw/components/ScrollView.js +15 -8
- package/lib/react-qw/components/Slider.js +2 -1
- package/lib/react-qw/components/Tab.js +6 -22
- package/lib/react-qw/components/Tooltip.js +10 -21
- package/lib/react-qw/components/TreeView.js +8 -31
- package/lib/react-qw/index.js +5 -3
- package/lib/react-qw/index.ts +8 -3
- package/lib/react-qw/nmhdr.js +3 -24
- package/lib/react-qw/nmhdr.ts +5 -30
- package/lib/react-qw/props.js +7 -2
- package/lib/react-qw/props.ts +7 -3
- package/lib/react-qw/reconciler.js +23 -13
- package/lib/react-qw/reconciler.ts +22 -13
- package/lib/text-measure.js +20 -23
- package/lib/text-measure.ts +22 -26
- package/lib/websocket.js +44 -4
- package/lib/websocket.ts +40 -4
- package/lib/windows/advapi32.js +53 -0
- package/lib/windows/advapi32.ts +64 -0
- package/lib/windows/comctl32.js +18 -0
- package/lib/windows/comctl32.ts +19 -0
- package/lib/windows/comdlg32.js +8 -0
- package/lib/windows/comdlg32.ts +10 -0
- package/lib/windows/gdi32.js +392 -0
- package/lib/windows/gdi32.ts +420 -0
- package/lib/windows/kernel32.js +262 -0
- package/lib/windows/kernel32.ts +291 -0
- package/lib/windows/msimg32.js +38 -0
- package/lib/windows/msimg32.ts +45 -0
- package/lib/windows/ntdll.js +9 -0
- package/lib/windows/ntdll.ts +11 -0
- package/lib/windows/ole32.js +7 -0
- package/lib/windows/ole32.ts +9 -0
- package/lib/windows/psapi.js +32 -0
- package/lib/windows/psapi.ts +37 -0
- package/lib/windows/shell32.js +13 -0
- package/lib/windows/shell32.ts +16 -0
- package/lib/windows/structs.js +519 -0
- package/lib/windows/structs.ts +566 -0
- package/lib/windows/user32.js +572 -0
- package/lib/windows/user32.ts +607 -0
- package/lib/windows/version.js +29 -0
- package/lib/windows/version.ts +35 -0
- package/lib/windows/winspool.js +71 -0
- package/lib/windows/winspool.ts +80 -0
- package/package.json +1 -1
- package/quickwin.d.ts +31 -40
- package/quickwin_const.d.ts +137 -0
- package/qwin-nowasm-x86.exe +0 -0
- package/qwin-nowasm.exe +0 -0
- package/qwin-x86.exe +0 -0
- package/qwin.exe +0 -0
- package/test/bench_ffi_callraw.js +236 -0
- package/test/bench_ffi_callraw.ts +236 -0
- package/test/bench_ffi_overhead.js +139 -0
- package/test/bench_ffi_overhead.ts +141 -0
- package/test/bench_sendmessage.js +104 -0
- package/test/bench_sendmessage.ts +100 -0
- package/test/bench_sendmessage_nonnull.js +187 -0
- package/test/bench_sendmessage_nonnull.ts +188 -0
- package/test/run.js +19 -4
- package/test/run.ts +20 -5
- package/test/test_basic_fetch.js +29 -0
- package/test/test_basic_fetch.ts +26 -0
- package/test/test_ffi.js +27 -45
- package/test/test_ffi.ts +35 -54
- package/test/test_ffi_abi.js +290 -0
- package/test/test_ffi_abi.ts +274 -0
- package/test/test_ffi_array.js +116 -0
- package/test/test_ffi_array.ts +141 -0
- package/test/test_ffi_bind.js +620 -8
- package/test/test_ffi_bind.ts +630 -8
- package/test/test_ffi_struct.js +632 -88
- package/test/test_ffi_struct.ts +666 -91
- package/test/test_ffi_struct_layout.js +495 -0
- package/test/test_ffi_struct_layout.ts +543 -0
- package/test/test_ffi_user32.js +103 -0
- package/test/test_ffi_user32.ts +113 -0
- package/test/test_ffi_windows.js +101 -0
- package/test/test_ffi_windows.ts +113 -0
- package/test/test_files.js +102 -0
- package/test/test_files.ts +121 -0
- package/test/test_gdi_draw.js +681 -0
- package/test/test_gdi_draw.ts +725 -0
- package/test/test_helper.js +8 -1
- package/test/test_helper.ts +9 -1
- package/test/test_http_import.js +18 -0
- package/test/test_http_import.ts +19 -0
- package/test/test_http_server.js +73 -1
- package/test/test_http_server.ts +75 -1
- package/test/test_ipv6.js +2 -2
- package/test/test_ipv6.ts +2 -2
- package/test/test_net_fetch.js +74 -11
- package/test/test_net_fetch.ts +73 -10
- package/test/test_net_websocket.js +1 -1
- package/test/test_net_websocket.ts +1 -1
- package/test/test_printer.js +137 -0
- package/test/test_printer.ts +148 -0
- package/test/test_proc.js +141 -0
- package/test/test_proc.ts +163 -0
- package/test/test_react_complex.js +1401 -1069
- package/test/test_react_counter.js +1391 -1059
- package/test/test_react_flex.js +1411 -1072
- package/test/test_react_hidden.js +1394 -1062
- package/test/test_react_listview_link.js +1391 -1059
- package/test/test_react_notify.js +18638 -0
- package/test/test_react_render.js +1391 -1059
- package/test/test_registry.js +74 -0
- package/test/test_registry.ts +95 -0
- package/test/test_sysinfo.js +122 -0
- package/test/test_sysinfo.ts +141 -0
- package/test/test_wolfssl_read.js +45 -43
- package/test/test_wolfssl_read.ts +42 -40
- package/test/test_worker_net.js +35 -17
- package/test/test_worker_net.ts +27 -15
- package/tsconfig.json +1 -1
- package/examples/exec_server.ts +0 -80
- package/lib/ffi-bind.js +0 -85
- package/lib/ffi-bind.ts +0 -170
- package/lib/ffi-struct.js +0 -224
- package/lib/ffi-struct.ts +0 -239
- package/lib/win-common-structs.js +0 -39
- package/lib/win-common-structs.ts +0 -41
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// version.dll 绑定(文件版本资源——exe/dll「属性 → 详细信息」的数据;品牌约定见
|
|
2
|
+
// lib/windows/user32.ts 头注释):
|
|
3
|
+
// - 读取三段式:Size 拿缓冲大小与句柄 → Info 读进缓冲 → VerQueryValue 在缓冲内
|
|
4
|
+
// 查询子块(lplpBuffer 回写的指针指向缓冲内部,跟进读用 ffi.readByte 拼值)
|
|
5
|
+
// - 位宽无关:句柄/指针出参槽一律 <BYTE>ptr 收 PAB(4/8) + DataView / os.arch 分支读回
|
|
6
|
+
import { bind, type CodecMap } from '../ffi/bind.js'
|
|
7
|
+
|
|
8
|
+
// dll 名部分应用(工厂转调保泛型 infer,见 lib/windows/user32.ts 头注释)
|
|
9
|
+
const b = <const S extends string, const LE extends CodecMap = {}>(name: string, sig: S, encoders?: LE) =>
|
|
10
|
+
bind('version.dll', name, sig, encoders)
|
|
11
|
+
|
|
12
|
+
/** 取文件版本资源大小
|
|
13
|
+
* @returns 字节数(0 = 文件无版本资源)
|
|
14
|
+
* @param args_0 lptstrFilename 文件路径(禁空)
|
|
15
|
+
* @param args_1 lpdwHandle 出参槽(Info 步的入参句柄,MSDN 恒 0 但仍须传),
|
|
16
|
+
* PtrArrayBuffer(4) + Uint32Array 读回 */
|
|
17
|
+
export const GetFileVersionInfoSize = /*@__PURE__*/ b('GetFileVersionInfoSizeW',
|
|
18
|
+
'<WCHAR>ptr! <BYTE>ptr -> u32')
|
|
19
|
+
/** 读版本资源进缓冲
|
|
20
|
+
* @returns 成功 → 非 0
|
|
21
|
+
* @param args_0 lptstrFilename 文件路径(禁空)
|
|
22
|
+
* @param args_1 dwHandle Size 步读回的句柄(恒 0)
|
|
23
|
+
* @param args_2 dwLen 缓冲字节数(= Size 返回值)
|
|
24
|
+
* @param args_3 lpData 接收缓冲(PtrArrayBuffer(dwLen)) */
|
|
25
|
+
export const GetFileVersionInfo = /*@__PURE__*/ b('GetFileVersionInfoW',
|
|
26
|
+
'<WCHAR>ptr! u32 u32 <BYTE>ptr -> i32')
|
|
27
|
+
/** 在版本资源缓冲内查询子块
|
|
28
|
+
* @returns 成功 → 非 0
|
|
29
|
+
* @param args_0 pBlock Info 步的资源缓冲(PtrArrayBuffer 直传)
|
|
30
|
+
* @param args_1 lpszSubBlock 子块路径(禁空):'\\' = 根块 VS_FIXEDFILEINFO、
|
|
31
|
+
* '\\StringFileInfo\\040904B0\\FileVersion' 等字符串表项
|
|
32
|
+
* @param args_2 lplpBuffer 出参槽(块内偏移指针写回),PtrArrayBuffer(8)
|
|
33
|
+
* @param args_3 puLen 出参槽(块字节数,VS_FIXEDFILEINFO = 52),PtrArrayBuffer(4) */
|
|
34
|
+
export const VerQueryValue = /*@__PURE__*/ b('VerQueryValueW',
|
|
35
|
+
'<BYTE>ptr <WCHAR>ptr! <BYTE>ptr <BYTE>ptr -> i32')
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
// winspool.drv 绑定(打印后台处理:枚举 / 能力查询 / 原始作业链;品牌约定见
|
|
2
|
+
// lib/windows/user32.ts 头注释):
|
|
3
|
+
// - 打印机句柄(OpenPrinter 的 HPRINTER* 出参槽写回)位宽无关:出参槽 = <BYTE>ptr
|
|
4
|
+
// 收 PtrArrayBuffer(8) + readPtr 读回 number,作业链句柄位 <>ptr 收宽(批 5 HKey 同型)
|
|
5
|
+
// - 结构位按方向分流(结构定义见 ./structs.ts):DOC_INFO_1W 纯入参位注册 encoder →
|
|
6
|
+
// 对象直传;PRINTER_INFO_2W 出参数组不注册 → structArray(PRINTER_INFO_2W).decode
|
|
7
|
+
// (buf, count) 读回(缓冲尾部含字符串,须显式 count),指针字段跟进读字符串
|
|
8
|
+
// - 枚举标注:DeviceCap 是单选查询位标枚举;PrinterEnum 是 LOCAL|CONNECTIONS 可组合
|
|
9
|
+
// flags → 裸 u32 + JSDoc(组合 OR 结果不是枚举成员,位标枚举反而传不进)
|
|
10
|
+
import { bind } from '../ffi/bind.js';
|
|
11
|
+
import { DOC_INFO_1W } from './structs.js';
|
|
12
|
+
// dll 名部分应用(工厂转调保泛型 infer,见 lib/windows/user32.ts 头注释)
|
|
13
|
+
const b = (name, sig, encoders) => bind('winspool.drv', name, sig, encoders);
|
|
14
|
+
/** 枚举打印队列(Level=2 → PRINTER_INFO_2W 数组);两段式:先
|
|
15
|
+
* NULL+cbBuf 0 拿 pcbNeeded,再按需分配缓冲重调
|
|
16
|
+
* @returns 成功 → 非 0
|
|
17
|
+
* @param args_0 dwFlags 枚举范围:gui.PrinterEnum.LOCAL(0x2) 本地 | CONNECTIONS(0x4)
|
|
18
|
+
* 已连接,组合 OR 传裸数(可组合 flags 不标枚举)
|
|
19
|
+
* @param args_1 pName 服务器名(仅 Level=4/5/6 用),本地枚举传 NULL
|
|
20
|
+
* @param args_2 dwLevel 信息级别,取 2(PRINTER_INFO_2W)
|
|
21
|
+
* @param args_3 pPrinterInfo 出参缓冲(PtrArrayBuffer(pcbNeeded))
|
|
22
|
+
* @param args_4 cbBuf 缓冲字节数
|
|
23
|
+
* @param args_5 pcbNeeded 出参槽(需求字节数)PtrArrayBuffer(4)
|
|
24
|
+
* @param args_6 pcReturned 出参槽(返回条数)PtrArrayBuffer(4) */
|
|
25
|
+
export const EnumPrinters = /*@__PURE__*/ b('EnumPrintersW', 'u32 <WCHAR>ptr u32 <BYTE>ptr u32 <BYTE>ptr <BYTE>ptr -> i32');
|
|
26
|
+
/** 取默认打印机名
|
|
27
|
+
* @returns 成功 → 非 0,0 = 失败(缓冲不足时 pcchBuffer 带回所需长度)
|
|
28
|
+
* @param args_0 pszBuffer 出参缓冲,WCHAR.alloc(n)、WCHAR.decode 读回
|
|
29
|
+
* @param args_1 pcchBuffer 出入长度槽(入 = 缓冲 WCHAR 容量,出 = 实际长度),PtrArrayBuffer(4) */
|
|
30
|
+
export const GetDefaultPrinter = /*@__PURE__*/ b('GetDefaultPrinterW', '<BYTE>ptr <BYTE>ptr -> i32');
|
|
31
|
+
/** 查设备能力;nCapability 单选 gui.DeviceCap.*
|
|
32
|
+
* @returns 返回值随能力(数值能力 = 数值,
|
|
33
|
+
* -1 = 失败)
|
|
34
|
+
* @param args_0 pDevice 打印机名(禁空)
|
|
35
|
+
* @param args_1 pPort 端口名,传 NULL 用打印机配置端口
|
|
36
|
+
* @param args_2 nCapability 能力码(gui.DeviceCap.HORZRES 等单选)
|
|
37
|
+
* @param args_3 pOutput 字符串列表型能力的缓冲;数值型查询传 NULL
|
|
38
|
+
* @param args_4 pDevmode DEVMODE,传 NULL */
|
|
39
|
+
export const DeviceCapabilities = /*@__PURE__*/ b('DeviceCapabilitiesW', '<WCHAR>ptr! <WCHAR>ptr u32@DeviceCap <BYTE>ptr <>ptr -> i32');
|
|
40
|
+
/** 打开打印机对象(不产生打印作业)
|
|
41
|
+
* @returns 成功 → 非 0,hPrinter 写回
|
|
42
|
+
* @param args_0 pPrinterName 打印机名(禁空)
|
|
43
|
+
* @param args_1 phPrinter 出参槽(句柄写回),PtrArrayBuffer(8) + readPtr 读回
|
|
44
|
+
* @param args_2 pDefault 默认值(Datatype/DevMode/DesiredAccess),传 NULL 全默认 */
|
|
45
|
+
export const OpenPrinter = /*@__PURE__*/ b('OpenPrinterW', '<WCHAR>ptr! <BYTE>ptr <>ptr -> i32');
|
|
46
|
+
/** 关闭打印机句柄
|
|
47
|
+
* @returns 成功 → 非 0 */
|
|
48
|
+
export const ClosePrinter = /*@__PURE__*/ b('ClosePrinter', '<>ptr -> i32');
|
|
49
|
+
/** 起打印作业
|
|
50
|
+
* @returns 作业 id(0 = 失败)
|
|
51
|
+
* @param args_0 hPrinter 打印机句柄
|
|
52
|
+
* @param args_1 dwLevel 固定 1(DOC_INFO_1W)
|
|
53
|
+
* @param args_2 pDocInfo DOC_INFO_1W 对象(指针字段收裸地址 number:WCHAR.encode(s).ptr,
|
|
54
|
+
* PAB 须在调用返回前保持引用) */
|
|
55
|
+
export const StartDocPrinter = /*@__PURE__*/ b('StartDocPrinterW', '<>ptr u32 <DOC_INFO_1W>ptr -> u32', { DOC_INFO_1W });
|
|
56
|
+
/** 结束打印作业(提交)
|
|
57
|
+
* @returns 成功 → 非 0 */
|
|
58
|
+
export const EndDocPrinter = /*@__PURE__*/ b('EndDocPrinter', '<>ptr -> i32');
|
|
59
|
+
/** 起页
|
|
60
|
+
* @returns 成功 → 非 0 */
|
|
61
|
+
export const StartPagePrinter = /*@__PURE__*/ b('StartPagePrinter', '<>ptr -> i32');
|
|
62
|
+
/** 结束页
|
|
63
|
+
* @returns 成功 → 非 0 */
|
|
64
|
+
export const EndPagePrinter = /*@__PURE__*/ b('EndPagePrinter', '<>ptr -> i32');
|
|
65
|
+
/** 写作业数据(RAW 直写 spooler)
|
|
66
|
+
* @returns 成功 → 非 0
|
|
67
|
+
* @param args_0 hPrinter 打印机句柄
|
|
68
|
+
* @param args_1 lpBuffer 数据缓冲(<BYTE>ptr,PtrArrayBuffer)
|
|
69
|
+
* @param args_2 nNumberOfBytesToWrite 写入字节数
|
|
70
|
+
* @param args_3 lpNumberOfBytesWritten 出参槽,PtrArrayBuffer(4) 读实际写入字节数 */
|
|
71
|
+
export const WritePrinter = /*@__PURE__*/ b('WritePrinter', '<>ptr <BYTE>ptr u32 <BYTE>ptr -> i32');
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
// winspool.drv 绑定(打印后台处理:枚举 / 能力查询 / 原始作业链;品牌约定见
|
|
2
|
+
// lib/windows/user32.ts 头注释):
|
|
3
|
+
// - 打印机句柄(OpenPrinter 的 HPRINTER* 出参槽写回)位宽无关:出参槽 = <BYTE>ptr
|
|
4
|
+
// 收 PtrArrayBuffer(8) + readPtr 读回 number,作业链句柄位 <>ptr 收宽(批 5 HKey 同型)
|
|
5
|
+
// - 结构位按方向分流(结构定义见 ./structs.ts):DOC_INFO_1W 纯入参位注册 encoder →
|
|
6
|
+
// 对象直传;PRINTER_INFO_2W 出参数组不注册 → structArray(PRINTER_INFO_2W).decode
|
|
7
|
+
// (buf, count) 读回(缓冲尾部含字符串,须显式 count),指针字段跟进读字符串
|
|
8
|
+
// - 枚举标注:DeviceCap 是单选查询位标枚举;PrinterEnum 是 LOCAL|CONNECTIONS 可组合
|
|
9
|
+
// flags → 裸 u32 + JSDoc(组合 OR 结果不是枚举成员,位标枚举反而传不进)
|
|
10
|
+
import { bind, type CodecMap } from '../ffi/bind.js'
|
|
11
|
+
import { DOC_INFO_1W } from './structs.js'
|
|
12
|
+
|
|
13
|
+
// dll 名部分应用(工厂转调保泛型 infer,见 lib/windows/user32.ts 头注释)
|
|
14
|
+
const b = <const S extends string, const LE extends CodecMap = {}>(name: string, sig: S, encoders?: LE) =>
|
|
15
|
+
bind('winspool.drv', name, sig, encoders)
|
|
16
|
+
|
|
17
|
+
/** 枚举打印队列(Level=2 → PRINTER_INFO_2W 数组);两段式:先
|
|
18
|
+
* NULL+cbBuf 0 拿 pcbNeeded,再按需分配缓冲重调
|
|
19
|
+
* @returns 成功 → 非 0
|
|
20
|
+
* @param args_0 dwFlags 枚举范围:gui.PrinterEnum.LOCAL(0x2) 本地 | CONNECTIONS(0x4)
|
|
21
|
+
* 已连接,组合 OR 传裸数(可组合 flags 不标枚举)
|
|
22
|
+
* @param args_1 pName 服务器名(仅 Level=4/5/6 用),本地枚举传 NULL
|
|
23
|
+
* @param args_2 dwLevel 信息级别,取 2(PRINTER_INFO_2W)
|
|
24
|
+
* @param args_3 pPrinterInfo 出参缓冲(PtrArrayBuffer(pcbNeeded))
|
|
25
|
+
* @param args_4 cbBuf 缓冲字节数
|
|
26
|
+
* @param args_5 pcbNeeded 出参槽(需求字节数)PtrArrayBuffer(4)
|
|
27
|
+
* @param args_6 pcReturned 出参槽(返回条数)PtrArrayBuffer(4) */
|
|
28
|
+
export const EnumPrinters = /*@__PURE__*/ b('EnumPrintersW',
|
|
29
|
+
'u32 <WCHAR>ptr u32 <BYTE>ptr u32 <BYTE>ptr <BYTE>ptr -> i32')
|
|
30
|
+
|
|
31
|
+
/** 取默认打印机名
|
|
32
|
+
* @returns 成功 → 非 0,0 = 失败(缓冲不足时 pcchBuffer 带回所需长度)
|
|
33
|
+
* @param args_0 pszBuffer 出参缓冲,WCHAR.alloc(n)、WCHAR.decode 读回
|
|
34
|
+
* @param args_1 pcchBuffer 出入长度槽(入 = 缓冲 WCHAR 容量,出 = 实际长度),PtrArrayBuffer(4) */
|
|
35
|
+
export const GetDefaultPrinter = /*@__PURE__*/ b('GetDefaultPrinterW', '<BYTE>ptr <BYTE>ptr -> i32')
|
|
36
|
+
|
|
37
|
+
/** 查设备能力;nCapability 单选 gui.DeviceCap.*
|
|
38
|
+
* @returns 返回值随能力(数值能力 = 数值,
|
|
39
|
+
* -1 = 失败)
|
|
40
|
+
* @param args_0 pDevice 打印机名(禁空)
|
|
41
|
+
* @param args_1 pPort 端口名,传 NULL 用打印机配置端口
|
|
42
|
+
* @param args_2 nCapability 能力码(gui.DeviceCap.HORZRES 等单选)
|
|
43
|
+
* @param args_3 pOutput 字符串列表型能力的缓冲;数值型查询传 NULL
|
|
44
|
+
* @param args_4 pDevmode DEVMODE,传 NULL */
|
|
45
|
+
export const DeviceCapabilities = /*@__PURE__*/ b('DeviceCapabilitiesW',
|
|
46
|
+
'<WCHAR>ptr! <WCHAR>ptr u32@DeviceCap <BYTE>ptr <>ptr -> i32')
|
|
47
|
+
|
|
48
|
+
/** 打开打印机对象(不产生打印作业)
|
|
49
|
+
* @returns 成功 → 非 0,hPrinter 写回
|
|
50
|
+
* @param args_0 pPrinterName 打印机名(禁空)
|
|
51
|
+
* @param args_1 phPrinter 出参槽(句柄写回),PtrArrayBuffer(8) + readPtr 读回
|
|
52
|
+
* @param args_2 pDefault 默认值(Datatype/DevMode/DesiredAccess),传 NULL 全默认 */
|
|
53
|
+
export const OpenPrinter = /*@__PURE__*/ b('OpenPrinterW', '<WCHAR>ptr! <BYTE>ptr <>ptr -> i32')
|
|
54
|
+
/** 关闭打印机句柄
|
|
55
|
+
* @returns 成功 → 非 0 */
|
|
56
|
+
export const ClosePrinter = /*@__PURE__*/ b('ClosePrinter', '<>ptr -> i32')
|
|
57
|
+
/** 起打印作业
|
|
58
|
+
* @returns 作业 id(0 = 失败)
|
|
59
|
+
* @param args_0 hPrinter 打印机句柄
|
|
60
|
+
* @param args_1 dwLevel 固定 1(DOC_INFO_1W)
|
|
61
|
+
* @param args_2 pDocInfo DOC_INFO_1W 对象(指针字段收裸地址 number:WCHAR.encode(s).ptr,
|
|
62
|
+
* PAB 须在调用返回前保持引用) */
|
|
63
|
+
export const StartDocPrinter = /*@__PURE__*/ b('StartDocPrinterW', '<>ptr u32 <DOC_INFO_1W>ptr -> u32',
|
|
64
|
+
{ DOC_INFO_1W })
|
|
65
|
+
/** 结束打印作业(提交)
|
|
66
|
+
* @returns 成功 → 非 0 */
|
|
67
|
+
export const EndDocPrinter = /*@__PURE__*/ b('EndDocPrinter', '<>ptr -> i32')
|
|
68
|
+
/** 起页
|
|
69
|
+
* @returns 成功 → 非 0 */
|
|
70
|
+
export const StartPagePrinter = /*@__PURE__*/ b('StartPagePrinter', '<>ptr -> i32')
|
|
71
|
+
/** 结束页
|
|
72
|
+
* @returns 成功 → 非 0 */
|
|
73
|
+
export const EndPagePrinter = /*@__PURE__*/ b('EndPagePrinter', '<>ptr -> i32')
|
|
74
|
+
/** 写作业数据(RAW 直写 spooler)
|
|
75
|
+
* @returns 成功 → 非 0
|
|
76
|
+
* @param args_0 hPrinter 打印机句柄
|
|
77
|
+
* @param args_1 lpBuffer 数据缓冲(<BYTE>ptr,PtrArrayBuffer)
|
|
78
|
+
* @param args_2 nNumberOfBytesToWrite 写入字节数
|
|
79
|
+
* @param args_3 lpNumberOfBytesWritten 出参槽,PtrArrayBuffer(4) 读实际写入字节数 */
|
|
80
|
+
export const WritePrinter = /*@__PURE__*/ b('WritePrinter', '<>ptr <BYTE>ptr u32 <BYTE>ptr -> i32')
|
package/package.json
CHANGED
package/quickwin.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/// <reference path="quickwin_const.d.ts" />
|
|
2
|
+
/// <reference path="quickwin_enum_map.d.ts" />
|
|
2
3
|
interface ImportMeta {
|
|
3
4
|
url: string
|
|
4
5
|
}
|
|
@@ -358,6 +359,7 @@ declare module "sock" {
|
|
|
358
359
|
function accept(sock: SockHandle): { handle: SockHandle; addr: string; port: number } | null;
|
|
359
360
|
/** getsockname(sock) — 返回本地绑定地址 { addr, port }(port=0 自动分配后可用它查询实际端口) */
|
|
360
361
|
function getsockname(sock: SockHandle): { addr: string; port: number } | null;
|
|
362
|
+
/** send(sock, buf, flags?) — 返回实际送出字节数;非阻塞缓冲满返回 0(入队等 FD_WRITE 重发);真错误返回 -1 */
|
|
361
363
|
function send(sock: SockHandle, buf: ArrayBuffer, flags?: number): number;
|
|
362
364
|
function recv(sock: SockHandle, size?: number, flags?: number): ArrayBuffer | null;
|
|
363
365
|
function closesocket(sock: SockHandle): void;
|
|
@@ -377,6 +379,16 @@ declare module "wolfssl" {
|
|
|
377
379
|
function wolfSSL_CTX_new(method: WOLFSSL_METHOD): WOLFSSL_CTX | null;
|
|
378
380
|
function wolfSSL_CTX_free(ctx: WOLFSSL_CTX): void;
|
|
379
381
|
function wolfSSL_CTX_set_verify(ctx: WOLFSSL_CTX, mode: VerifyMode): number;
|
|
382
|
+
function wolfSSL_CTX_load_verify_locations(ctx: WOLFSSL_CTX, file: string, path?: string): number;
|
|
383
|
+
function wolfSSL_check_domain_name(ssl: WOLFSSL, name: string): number;
|
|
384
|
+
/** Add a PEM to the process-wide trusted CA store (fixed capacity).
|
|
385
|
+
* Returns the new entry count (1..8), or -1 on empty PEM / full store;
|
|
386
|
+
* the caller decides whether -1 is fatal. Entries are applied by
|
|
387
|
+
* loadTrustedCerts() at handshake setup time, not retroactively. */
|
|
388
|
+
function addTrustedCA(pem: string): number;
|
|
389
|
+
/** Load the OS CA store plus every entry of the trusted CA store into ctx.
|
|
390
|
+
* Returns how many store entries were loaded. */
|
|
391
|
+
function loadTrustedCerts(ctx: WOLFSSL_CTX): number;
|
|
380
392
|
function wolfSSL_CTX_use_certificate_file(ctx: WOLFSSL_CTX, file: string, format?: FileType): number;
|
|
381
393
|
function wolfSSL_CTX_use_PrivateKey_file(ctx: WOLFSSL_CTX, file: string, format?: FileType): number;
|
|
382
394
|
|
|
@@ -386,19 +398,23 @@ declare module "wolfssl" {
|
|
|
386
398
|
function wolfSSL_connect(ssl: WOLFSSL): number;
|
|
387
399
|
function wolfSSL_shutdown(ssl: WOLFSSL): number;
|
|
388
400
|
function wolfSSL_write(ssl: WOLFSSL, buf: ArrayBuffer): number;
|
|
389
|
-
/**
|
|
390
|
-
|
|
401
|
+
/** 读入 buf(大小取 buf.byteLength),返回 wolfSSL 原始返回值:
|
|
402
|
+
* >0=字节数(数据在 buf[0..ret)),0=对端正常关闭,<0=错误;
|
|
403
|
+
* 语义用 wolfSSL_get_error(ssl, ret) 区分(2=WANT_READ 暂无数据,6=ZERO_RETURN 关闭) */
|
|
404
|
+
function wolfSSL_read(ssl: WOLFSSL, buf: ArrayBuffer): number;
|
|
391
405
|
function wolfSSL_get_error(ssl: WOLFSSL, ret: number): number;
|
|
392
406
|
function wolfSSL_UseSNI(ssl: WOLFSSL, type: SniType, name: string, len?: number): number;
|
|
393
407
|
|
|
394
408
|
function wolfSSLv23_client_method(): WOLFSSL_METHOD;
|
|
395
409
|
function wolfTLSv1_2_client_method(): WOLFSSL_METHOD;
|
|
396
|
-
|
|
410
|
+
/** 此 wolfSSL 构建禁用 TLSv1.3:返回 0(无 method 指针),调用方自行判定 */
|
|
411
|
+
function wolfTLSv1_3_client_method(): WOLFSSL_METHOD | 0;
|
|
397
412
|
|
|
398
413
|
}
|
|
399
414
|
|
|
400
415
|
declare module "win" {
|
|
401
|
-
|
|
416
|
+
/** 与 ffi 的 Ptr<"HMODULE"> 同型(ptrBrand string 键)——FFI 侧 <HMODULE>ptr 位(HINSTANCE 语义)直收 */
|
|
417
|
+
type HMODULE = number & { readonly ptrBrand: "HMODULE" };
|
|
402
418
|
|
|
403
419
|
function LoadLibrary(libName: string): HMODULE | null;
|
|
404
420
|
function GetProcAddress(hModule: HMODULE, procName: string): number | null;
|
|
@@ -410,11 +426,13 @@ declare module "win" {
|
|
|
410
426
|
}
|
|
411
427
|
|
|
412
428
|
declare module "gui" {
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
type
|
|
416
|
-
type
|
|
417
|
-
type
|
|
429
|
+
/** 与 ffi 的 Ptr<"N"> 结构同型(ptrBrand string 键,见 lib/ffi/ctype.ts)——各句柄可在
|
|
430
|
+
* gui 模块与 FFI 绑定两体系间互认直传(原 unique symbol 键只有 HWND 打通) */
|
|
431
|
+
type HWND = number & { readonly ptrBrand: "HWND" };
|
|
432
|
+
type HMENU = number & { readonly ptrBrand: "HMENU" };
|
|
433
|
+
type HFONT = number & { readonly ptrBrand: "HFONT" };
|
|
434
|
+
type HICON = number & { readonly ptrBrand: "HICON" };
|
|
435
|
+
type WNDPROC = number & { readonly ptrBrand: "WNDPROC" };
|
|
418
436
|
|
|
419
437
|
function RegisterClass(className: string, wndProc?: (hwnd: HWND, msg: number, wParam: number, lParam: number) => number): number;
|
|
420
438
|
function CreateWindow(className: string, title: string, style: number, x: number, y: number, width: number, height: number, parent: HWND | null, menu: HMENU | null): HWND | null;
|
|
@@ -545,40 +563,13 @@ declare module "gui" {
|
|
|
545
563
|
}
|
|
546
564
|
|
|
547
565
|
declare module "ffi" {
|
|
548
|
-
|
|
549
|
-
type TYPE_OF_FFI_TYPE_UINT8 = number & { readonly __label: unique symbol }
|
|
550
|
-
type TYPE_OF_FFI_TYPE_SINT8 = number & { readonly __label: unique symbol }
|
|
551
|
-
type TYPE_OF_FFI_TYPE_UINT16 = number & { readonly __label: unique symbol }
|
|
552
|
-
type TYPE_OF_FFI_TYPE_SINT16 = number & { readonly __label: unique symbol }
|
|
553
|
-
type TYPE_OF_FFI_TYPE_UINT32 = number & { readonly __label: unique symbol }
|
|
554
|
-
type TYPE_OF_FFI_TYPE_SINT32 = number & { readonly __label: unique symbol }
|
|
555
|
-
type TYPE_OF_FFI_TYPE_UINT64 = number & { readonly __label: unique symbol }
|
|
556
|
-
type TYPE_OF_FFI_TYPE_SINT64 = number & { readonly __label: unique symbol }
|
|
557
|
-
type TYPE_OF_FFI_TYPE_FLOAT = number & { readonly __label: unique symbol }
|
|
558
|
-
type TYPE_OF_FFI_TYPE_DOUBLE = number & { readonly __label: unique symbol }
|
|
559
|
-
type TYPE_OF_FFI_TYPE_POINTER = number & { readonly __label: unique symbol }
|
|
560
|
-
|
|
561
|
-
const FFI_TYPE_VOID: TYPE_OF_FFI_TYPE_VOID;
|
|
562
|
-
const FFI_TYPE_UINT8: TYPE_OF_FFI_TYPE_UINT8;
|
|
563
|
-
const FFI_TYPE_SINT8: TYPE_OF_FFI_TYPE_SINT8;
|
|
564
|
-
const FFI_TYPE_UINT16: TYPE_OF_FFI_TYPE_UINT16;
|
|
565
|
-
const FFI_TYPE_SINT16: TYPE_OF_FFI_TYPE_SINT16;
|
|
566
|
-
const FFI_TYPE_UINT32: TYPE_OF_FFI_TYPE_UINT32;
|
|
567
|
-
const FFI_TYPE_SINT32: TYPE_OF_FFI_TYPE_SINT32;
|
|
568
|
-
const FFI_TYPE_UINT64: TYPE_OF_FFI_TYPE_UINT64;
|
|
569
|
-
const FFI_TYPE_SINT64: TYPE_OF_FFI_TYPE_SINT64;
|
|
570
|
-
const FFI_TYPE_FLOAT: TYPE_OF_FFI_TYPE_FLOAT;
|
|
571
|
-
const FFI_TYPE_DOUBLE: TYPE_OF_FFI_TYPE_DOUBLE;
|
|
572
|
-
const FFI_TYPE_POINTER: TYPE_OF_FFI_TYPE_POINTER;
|
|
573
|
-
|
|
574
|
-
type FfiType = TYPE_OF_FFI_TYPE_VOID | TYPE_OF_FFI_TYPE_UINT8 | TYPE_OF_FFI_TYPE_SINT8 | TYPE_OF_FFI_TYPE_UINT16 | TYPE_OF_FFI_TYPE_SINT16 | TYPE_OF_FFI_TYPE_UINT32 | TYPE_OF_FFI_TYPE_SINT32 | TYPE_OF_FFI_TYPE_UINT64 | TYPE_OF_FFI_TYPE_SINT64 | TYPE_OF_FFI_TYPE_FLOAT | TYPE_OF_FFI_TYPE_DOUBLE | TYPE_OF_FFI_TYPE_POINTER;
|
|
575
|
-
type TypeArg<T extends FfiType> = T extends Exclude<FfiType, TYPE_OF_FFI_TYPE_VOID | TYPE_OF_FFI_TYPE_POINTER> ? number : T extends TYPE_OF_FFI_TYPE_POINTER ? (ArrayBuffer | number | null) : never;
|
|
576
|
-
type TypeArgs<T extends FfiType[], Args extends(number | null | ArrayBuffer)[] = []> = T extends [infer T1 extends FfiType, ...infer RES extends FfiType[]] ? TypeArgs<RES, [...Args, TypeArg<T1>]> : Args;
|
|
577
|
-
|
|
578
|
-
function ffiCall<const T extends Exclude<FfiType, TYPE_OF_FFI_TYPE_VOID>[], const R extends FfiType>(func: number, argTypes: T, args: TypeArgs<T>, retType: R): R extends TYPE_OF_FFI_TYPE_VOID ? undefined : R extends TYPE_OF_FFI_TYPE_POINTER ? number | null : TypeArg<R>;
|
|
566
|
+
function ffiCall(func: number, argFrame: ArrayBuffer, retBuf: ArrayBuffer, retIsFp: 0 | 1): void;
|
|
579
567
|
function bufferPtr(buf: ArrayBuffer): number;
|
|
580
568
|
function readByte(ptr: number): number;
|
|
569
|
+
function readBytes(ptr: number, len: number): ArrayBuffer;
|
|
581
570
|
function writeByte(ptr: number, value: number): void;
|
|
571
|
+
function closureNew(argBytes: number, retKind: number, wrapper: (frame: ArrayBuffer, retBuf: ArrayBuffer) => void): number;
|
|
572
|
+
function closureFree(ptr: number): void;
|
|
582
573
|
}
|
|
583
574
|
|
|
584
575
|
|
package/quickwin_const.d.ts
CHANGED
|
@@ -676,6 +676,125 @@ declare module "gui" {
|
|
|
676
676
|
SRCCOPY = 13369376, // 0xCC0020
|
|
677
677
|
WHITENESS = 16711778, // 0xFF0062
|
|
678
678
|
BLACKNESS = 66, // 0x42
|
|
679
|
+
NOTSRCCOPY = 3342344, // 0x330008
|
|
680
|
+
NOTSRCERASE = 1114278, // 0x1100A6
|
|
681
|
+
SRCERASE = 4457256, // 0x440328
|
|
682
|
+
SRCAND = 8913094, // 0x8800C6
|
|
683
|
+
SRCINVERT = 6684742, // 0x660046
|
|
684
|
+
SRCPAINT = 15597702, // 0xEE0086
|
|
685
|
+
MERGECOPY = 12583114, // 0xC000CA
|
|
686
|
+
MERGEPAINT = 12255782, // 0xBB0226
|
|
687
|
+
PATCOPY = 15728673, // 0xF00021
|
|
688
|
+
PATINVERT = 5898313, // 0x5A0049
|
|
689
|
+
PATPAINT = 16452105, // 0xFB0A09
|
|
690
|
+
DSTINVERT = 5570569, // 0x550009
|
|
691
|
+
NOP = 255, // 0xFF
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
// GDI pen styles (CreatePen iStyle)
|
|
695
|
+
export const enum PenStyle {
|
|
696
|
+
SOLID = 0, // 0x0
|
|
697
|
+
DASH = 1, // 0x1
|
|
698
|
+
DOT = 2, // 0x2
|
|
699
|
+
DASHDOT = 3, // 0x3
|
|
700
|
+
DASHDOTDOT = 4, // 0x4
|
|
701
|
+
NULL = 5, // 0x5
|
|
702
|
+
INSIDEFRAME = 6, // 0x6
|
|
703
|
+
}
|
|
704
|
+
|
|
705
|
+
// SetBkMode: text/bkgrnd fill mode
|
|
706
|
+
export const enum BackgroundMode {
|
|
707
|
+
OPAQUE = 2, // 0x2
|
|
708
|
+
TRANSPARENT = 1, // 0x1
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
// GetStockObject: shared system objects (HBRUSH/HPEN/HFONT/HPAL) — never delete
|
|
712
|
+
export const enum StockObject {
|
|
713
|
+
WHITE_BRUSH = 0, // 0x0
|
|
714
|
+
LTGRAY_BRUSH = 1, // 0x1
|
|
715
|
+
GRAY_BRUSH = 2, // 0x2
|
|
716
|
+
DKGRAY_BRUSH = 3, // 0x3
|
|
717
|
+
BLACK_BRUSH = 4, // 0x4
|
|
718
|
+
NULL_BRUSH = 5, // 0x5
|
|
719
|
+
WHITE_PEN = 6, // 0x6
|
|
720
|
+
BLACK_PEN = 7, // 0x7
|
|
721
|
+
NULL_PEN = 8, // 0x8
|
|
722
|
+
OEM_FIXED_FONT = 10, // 0xA
|
|
723
|
+
ANSI_FIXED_FONT = 11, // 0xB
|
|
724
|
+
ANSI_VAR_FONT = 12, // 0xC
|
|
725
|
+
SYSTEM_FONT = 13, // 0xD
|
|
726
|
+
DEVICE_DEFAULT_FONT = 14, // 0xE
|
|
727
|
+
DEFAULT_PALETTE = 15, // 0xF
|
|
728
|
+
SYSTEM_FIXED_FONT = 16, // 0x10
|
|
729
|
+
DEFAULT_GUI_FONT = 17, // 0x11
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
// CreateHatchBrush: hatch pattern styles
|
|
733
|
+
export const enum HatchStyle {
|
|
734
|
+
HORIZONTAL = 0, // 0x0
|
|
735
|
+
VERTICAL = 1, // 0x1
|
|
736
|
+
FDIAGONAL = 2, // 0x2
|
|
737
|
+
BDIAGONAL = 3, // 0x3
|
|
738
|
+
CROSS = 4, // 0x4
|
|
739
|
+
DIAGCROSS = 5, // 0x5
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
// SetPolyFillMode: polygon fill rule (nonzero winding vs even-odd)
|
|
743
|
+
export const enum PolyFillMode {
|
|
744
|
+
ALTERNATE = 1, // 0x1
|
|
745
|
+
WINDING = 2, // 0x2
|
|
746
|
+
}
|
|
747
|
+
|
|
748
|
+
// SetROP2: binary raster mode (foreground pen vs dest mix)
|
|
749
|
+
export const enum RasterMode {
|
|
750
|
+
R2_BLACK = 1, // 0x1
|
|
751
|
+
R2_NOTMERGEPEN = 2, // 0x2
|
|
752
|
+
R2_MASKNOTPEN = 3, // 0x3
|
|
753
|
+
R2_NOTCOPYPEN = 4, // 0x4
|
|
754
|
+
R2_MASKPENNOT = 5, // 0x5
|
|
755
|
+
R2_NOT = 6, // 0x6
|
|
756
|
+
R2_XORPEN = 7, // 0x7
|
|
757
|
+
R2_MASKPEN = 9, // 0x9
|
|
758
|
+
R2_NOTXORPEN = 10, // 0xA
|
|
759
|
+
R2_MERGENOTPEN = 12, // 0xC
|
|
760
|
+
R2_NOP = 11, // 0xB
|
|
761
|
+
R2_MERGEPENNOT = 14, // 0xE
|
|
762
|
+
R2_COPYPEN = 13, // 0xD
|
|
763
|
+
R2_MERGEPEN = 15, // 0xF
|
|
764
|
+
R2_WHITE = 16, // 0x10
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
// SetTextAlign: text alignment flags (combinable, pass as u32)
|
|
768
|
+
export const enum TextAlign {
|
|
769
|
+
TA_LEFT = 0, // 0x0
|
|
770
|
+
TA_CENTER = 6, // 0x6
|
|
771
|
+
TA_RIGHT = 2, // 0x2
|
|
772
|
+
TA_TOP = 0, // 0x0
|
|
773
|
+
TA_BOTTOM = 8, // 0x8
|
|
774
|
+
TA_BASELINE = 24, // 0x18
|
|
775
|
+
TA_NOUPDATECP = 0, // 0x0
|
|
776
|
+
TA_UPDATECP = 1, // 0x1
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
// ExtTextOut: ETO_* options (combinable, pass as u32)
|
|
780
|
+
export const enum TextOutOptions {
|
|
781
|
+
ETO_CLIPPED = 4, // 0x4
|
|
782
|
+
ETO_OPAQUE = 2, // 0x2
|
|
783
|
+
ETO_GLYPH_INDEX = 16, // 0x10
|
|
784
|
+
}
|
|
785
|
+
|
|
786
|
+
// SetArcDirection: arc/chord/pie sweep direction (default counterclockwise)
|
|
787
|
+
export const enum ArcDirection {
|
|
788
|
+
COUNTERCLOCKWISE = 1, // 0x1
|
|
789
|
+
CLOCKWISE = 2, // 0x2
|
|
790
|
+
}
|
|
791
|
+
|
|
792
|
+
// SetStretchBltMode: color filtering when StretchBlt scales a bitmap
|
|
793
|
+
export const enum StretchBltMode {
|
|
794
|
+
ANDSCANS = 1, // 0x1
|
|
795
|
+
ORSCANS = 2, // 0x2
|
|
796
|
+
DELETESCANS = 3, // 0x3
|
|
797
|
+
HALFTONE = 4, // 0x4
|
|
679
798
|
}
|
|
680
799
|
|
|
681
800
|
export const enum OpenFileNameFlag {
|
|
@@ -698,12 +817,28 @@ declare module "gui" {
|
|
|
698
817
|
export const enum RegAccess {
|
|
699
818
|
SET_VALUE = 2, // 0x2
|
|
700
819
|
READ = 131097, // 0x20019
|
|
820
|
+
ALL_ACCESS = 983103, // 0xF003F
|
|
701
821
|
}
|
|
702
822
|
|
|
703
823
|
export const enum RegType {
|
|
704
824
|
SZ = 1, // 0x1
|
|
705
825
|
}
|
|
706
826
|
|
|
827
|
+
// File
|
|
828
|
+
export const enum FileCreation {
|
|
829
|
+
CREATE_NEW = 1, // 0x1
|
|
830
|
+
CREATE_ALWAYS = 2, // 0x2
|
|
831
|
+
OPEN_EXISTING = 3, // 0x3
|
|
832
|
+
OPEN_ALWAYS = 4, // 0x4
|
|
833
|
+
TRUNCATE_EXISTING = 5, // 0x5
|
|
834
|
+
}
|
|
835
|
+
|
|
836
|
+
export const enum FileSeekFrom {
|
|
837
|
+
BEGIN = 0, // 0x0
|
|
838
|
+
CURRENT = 1, // 0x1
|
|
839
|
+
END = 2, // 0x2
|
|
840
|
+
}
|
|
841
|
+
|
|
707
842
|
// Printer
|
|
708
843
|
export const enum PrinterEnum {
|
|
709
844
|
LOCAL = 2, // 0x2
|
|
@@ -716,6 +851,7 @@ declare module "gui" {
|
|
|
716
851
|
VERTRES = 10, // 0xA
|
|
717
852
|
LOGPIXELSX = 88, // 0x58
|
|
718
853
|
LOGPIXELSY = 90, // 0x5A
|
|
854
|
+
BITSPIXEL = 12, // 0xC
|
|
719
855
|
}
|
|
720
856
|
|
|
721
857
|
// Static controls
|
|
@@ -895,6 +1031,7 @@ declare module "wolfssl" {
|
|
|
895
1031
|
export const enum ErrorCode {
|
|
896
1032
|
WOLFSSL_ERROR_WANT_READ = 2, // 0x2
|
|
897
1033
|
WOLFSSL_ERROR_WANT_WRITE = 3, // 0x3
|
|
1034
|
+
WOLFSSL_ERROR_ZERO_RETURN = 6, // 0x6
|
|
898
1035
|
}
|
|
899
1036
|
|
|
900
1037
|
}
|
package/qwin-nowasm-x86.exe
CHANGED
|
Binary file
|
package/qwin-nowasm.exe
CHANGED
|
Binary file
|
package/qwin-x86.exe
CHANGED
|
Binary file
|
package/qwin.exe
CHANGED
|
Binary file
|