JSA里的FFI(2)——宽字符串LPCWSTR

创作者俱乐部成员
今天继续猜谜,试试传递宽字符串🤣
🔔 | function wstring(s) { const buff = new ArrayBuffer(s.length * 2 + 2) const view = new Uint16Array(buff) for (let i = 0; i < s.length; i++) { view[i] = s.charCodeAt(i) } return buff } function tt() { const user32 = FFI.LoadLibrary('User32') const msgbox = user32.LoadFunction('', 'MessageBoxW', '', 'int32', ['int32', 'pointer', 'pointer', 'int32']) const wstr = wstring('a😀c') msgbox.Call(Application.Hwnd, wstr, wstr, 1) } |
一开始的猜测是用FFI.RefPointer来传递指针
结果忘记写了,直接传了个ArrayBuffer竟也成了。。。
官方快出文档啊啊啊
只要有了FFI的文档,JSA直接超越VBA,再也不用羡慕它的declare啦,完美
winsqlite3.dll之类估计也直接能用了
猜出来的部分已经完美支持ahkdll了,窗体什么的不弄也罢,直接调用ahkdll动态生成更方便,再加上灵活的快捷键设置,以及更完善的winapi封装,只要FFI的官方文档出来,直接起飞啦
ExecuteExcel4Macro已经是牛夫人了,毕竟使用宽字符串太麻烦,且只能表格用,文档ppt只能眼馋,又不太支持64位和Linux
创作者俱乐部成员