Desktool 文档说明

第一步! 下载desktool.exe软件,启动 desktool.exe 软件,会生成 localhost:11027/desktool.js 的服务。

请引入该 js,例如:


<script async type="text/javascript" src="http://localhost:11027/desktool.js?name=desktool&callback=myCallback"></script>

//async 为选配属性,如果配置,该js引入不会阻塞dom
//name,选填,不填默认为desktool,假如换成myTool,那么该文档以下命令,请全部换成myTool('get':{os:{}});
//callback,选填,比如填写myCallback,请一定!在当前页面中定义一个window.myCallback的函数,该函数作用是回调,某些情况下打印结果是异步的(打印机掉线?缺纸?)通过callback拿到打印结果

js判断 desktool 插件是否安装

typeof desktool == 'function'; // 判断desktool插件是否安装

js获取 Windows 系统信息

desktool('get',{os:{}}); // 获取windows系统信息

js一次性获取CPU / GPU / 内存 / 磁盘 / 网络 固定信息


desktool('get',{gpu:{},mem:{unit:"KB"},cpu:{},disk:{unit:"MB"},network:{}}); // 获取固定属性值,并用MB或KB等单位返回,电脑内存/CPU/GPU/磁盘/网络信息

//小提示,get可以加参数unit,例如上面加了MB,也可以不加,不加默认返回字节,支持的单位有:B、KB、MB、GB、TB、PB

js获取内存 / CPU / 磁盘 / 网络使用率IO


desktool('get',{memNow:{},cpuNow:{},diskNow:{},networkNow:{}}); // 获取动态属性值,电脑内存/CPU/磁盘/网络信息

//小提示:所有的get可以混用,例如desktool('get',{os:{},mem:{},memNow:{},printer:{}})

js获取电脑所有打印机

desktool('get',{printer:{}}); // 获取电脑所有的打印机

js屏幕截图

desktool('get',{screenshot:{scale:0.8}}); // 获取电脑屏幕截图,scale:0.8 表示缩放 80%

js静默打印 点击这里查看详细介绍

desktool('print',{}); // 静默使用windows打印机打印

js打开控制面板 / 网络中心等系统窗口


desktool('control',{cmd:[]}); // 打开控制面板
desktool('control',{cmd:['printers']}); // 打开打印机

js打开资源管理器位置示例


desktool('explorer',{cmd:['C:\\']}); // 打开 C 盘
desktool('explorer',{cmd:['D:\\']}); // 打开 D 盘
desktool('explorer',{cmd:['C:\\Windows']}); // 打开 C:\Windows

js执行 PowerShell1 / PowerShell2(原生命令,为了安全不支持入参数,可在config.txt里改)

该命令是配置在desktool.exe的config目录下,一般场景比如:js获取usb称重器(得到kg后返回给网页?),js清理chrome缓存?,可自行配置,以下按钮示例为:js获取当前所有usb设备
desktool('powerShell1'); // 执行 desktool 预设的 PowerShell1 命令
desktool('powerShell2'); // 执行 desktool 预设的 PowerShell2 命令

关于安全和开启sign验签

首先如果打算使用sign,尽量保证调用desktool的sign加密过程是不可见的(方案:混淆,或服务端加密后给前端用)

//加密算法
//1.首先开启desktool.exe 下面的配置文件config.txt,配置serverSignOpen=true和serverSignToken=abcdefg(abcdefg为示例数据,可以在config.txt里更改)
//2.开启后,真实的完整请求大概样子应该是:
desktool("get",{os:{}},{nonce:'s52sj692sj6',time:1765916947291},'2db3f04e8a7563eca0d7d93d68357700')
//其中参数1参数2不变,新增参数3 需要包含随机串(服务端会校验请求10秒内是否是重复请求,请自行生成!)+当前时间(服务端会校验是否请求已过期10秒了,老的sign不会通过), 新增参数4,sign签名【其他说明:服务器底层验证原理:服务器有一个Map,存key+time验重,为了不爆内存10s后会递减清空】
//3. sign的签名 算法是MD5   method+paramJSON+randomJSON+token 
//示例:字符串拼接大概样子是:   get{"os":{}}{"nonce":"s52sj692sj6","time":1765916947291}abcdefg     (类似于js的JSON.stringify()或者java的org.json.toString())
//示例:字符串得到以后MD5进行加密 sign得到2db3f04e8a7563eca0d7d93d68357700,最终请将sign放到参数4位置,random放到参数3位置(random就是nonce+time的json体)