|
上次试制了执行shell命令的dll,这次本来想写libcurl网抓的,但接口越设计越复杂(需要curl发请求,iconv转编码,tidy清理html,最后再转成JSON方便处理),这个过程用shell命令一行就搞定,还灵活好修改,所以还是算了。
至于调用com对象,先用ahk写逻辑,再用shell调用的方法,虽不聪明但也能将就。
这次写了个调用sqlite3的dll,还是只有一个方法Exec可以执行多条sql命令,用CreateObject创建对象后就相当于打开了一个:memory:里的sqlite3数据库,随便创建表插入数据,执行select的结果会以JSON方式返回。
简单来说就是用JS随意构造SQL语句和数据,Exec执行后返回JSON。
用法:
还是先用wps注册dll:
- & 'C:\Users\Administrator\AppData\Local\Kingsoft\WPS Office\11.1.0.12313\office6\ksomisc.exe' -regnativex .\jsql.dll -i $false
复制代码
再用CreateObject创建对象:
- function NativeDemo_OnBtn1Click()
- {
- let cmd = CreateObject("jsql")
- alert(cmd.Exec(`select 1, 2;select 'a', NULL;`))
- }
复制代码
最后还是大概说一下nativex,也就是JS宏里的CreateObject是干啥的(我也没用几天,只是大概印象):
1. 不是VBA里的CreateObject,不是调用COM对象
2. 类似VBA里“Private Declare PtrSafe Function”这种调用dll的用法,但JS不比VBA数据类型和C大不相同,也不像AHK有DLLCALL,所以只弄出个nativex,得自己写dll来用
3. 由于JS自带正则和字典,原来VBA常用的COM对象其实就还剩网抓和文件操作,简单说就是和外部交换数据,那么与其再创造一种写法,还不如直接用dll调用外部shell来的方便(sed、awk、perl、curl、iconv、jq、cmd、pwsh...够用了,文档还特别多),上次写的dll可以优化下不显示黑框框,另外再接受stdin就差不多了
4. 这次写的sqlite3是因为xlwings在Excel里写sql太爽,想在wps里试试,至于其他好的c库怎么用到wps里暂时完全没有想法,有什么需求或发现bug请指出来我再改吧
|
评分
-
2
查看全部评分
-
|