【工具】USB Redirector软件的辅助工具
By
the100s
at 2022-04-11 • 0人收藏 • 939人看过
USB Redirector是一款usb设备共享工具,它可以把usb设备共享给局域网的其它电脑使用,使用时发现其缺点是不能主动停止共享导致键鼠共享状态在本机无法再使用,此辅助工具的作用就是当客户机电脑关机后,辅助工具主动停止共享,当客户机开机后又主动共享设备。
import win.ui; /*DSG{{*/ mainForm = win.form(text="USBredirect辅助工具";right=546;bottom=591) mainForm.add( btnDisable={cls="button";text="禁用定时器";left=439;top=258;right=526;bottom=293;z=5}; btnEnable={cls="button";text="启用定时器";left=7;top=258;right=418;bottom=293;z=2}; button={cls="button";text="列出客户";left=17;top=309;right=120;bottom=334;z=10}; button2={cls="button";text="列出设备";left=130;top=309;right=233;bottom=334;z=11}; cip={cls="edit";text="DESKTOP-AU809GM";left=169;top=154;right=536;bottom=226;db=1;dl=1;dr=1;dt=1;edge=1;multiline=1;z=4}; dev={cls="edit";text=' "USB Keyboard"';left=171;top=13;right=536;bottom=148;db=1;dl=1;dr=1;dt=1;edge=1;multiline=1;z=3}; edit={cls="edit";left=12;top=337;right=536;bottom=579;db=1;dl=1;dr=1;dt=1;edge=1;hscroll=1;multiline=1;vscroll=1;z=1}; lbIntervalMax={cls="static";text="间隔5000毫秒";left=419;top=241;right=526;bottom=255;align="right";transparent=1;z=9}; lbIntervalMin={cls="static";text="间隔500毫秒";left=12;top=240;right=115;bottom=255;transparent=1;z=8}; static={cls="static";text="计划共享的usb设备: (多个设备一行一个)";left=17;top=11;right=161;bottom=48;font=LOGFONT(h=-14);transparent=1;z=12}; static2={cls="static";text="指定客户上线时共享:";left=11;top=154;right=155;bottom=191;font=LOGFONT(h=-14);transparent=1;z=7}; trackbar={cls="trackbar";left=89;top=227;right=446;bottom=257;max=5000;min=500;z=6} ) /*}}*/ import process.popen; /* if(_ARGV.opt){ mainForm.edit.print(_ARGV.opt,_ARGV[#_ARGV]); } */ import fsys.config; config = fsys.config("/config/"); var shared=false //变量,防止重复执行分享设备指令 var unshared=false //变量,防止重复执行终止分享设备指令 //将窗口控件绑定到配置文件 config.mainForm mainForm.bindConfig( config.mainForm,{ edit = "text"; } ); //列出客户按钮 mainForm.button.oncommand = function(id,event){ var prcs = process.popen("\res\usbrdrsh.exe","-list clients"); //自进程获取输入数据 var out1=prcs.read(-1); var ck=string.indexOf(out1,mainForm.cip.text); mainForm.edit.text = out1 +'\n\r' + tostring(ck) mainForm.edit.print("") prcs.close(); } //列出设备按钮 mainForm.button2.oncommand = function(id,event){ var prcs = process.popen("\res\usbrdrsh.exe","-list"); //自进程获取输入数据 var out1=prcs.read(-1); mainForm.edit.text = out1 mainForm.edit.print("") } import win.timer var timer = win.timer( mainForm ); //定时器函数,功能是不断检查有没有客户端上线,有则分享USB设备;无则回收已分享的USB设备 timer.onTimer = function(hwnd,msg,id,tick){ var prcs = process.popen("\res\usbrdrsh.exe","-list clients"); //自进程获取输入数据 var out1=prcs.read(-1); var ck=string.indexOf(out1,mainForm.cip.text); mainForm.edit.text = out1 //+'\n\r' + tostring(ck) mainForm.edit.print("定时器运行中。。。") if(ck and shared=false){ for line in mainForm.dev.lines(true){ var prcs = process.popen("\res\usbrdrsh.exe","-share "+ line); shared=true //自进程获取输入数据 var out2=prcs.read(-1); mainForm.edit.print(out2) } }elseif(ck=false and unshared=false) {//客户离线停止分享设备 for line in mainForm.dev.lines(true){ var prcs = process.popen("\res\usbrdrsh.exe","-unshare "+ line); unshared=true var out2=prcs.read(-1); mainForm.edit.print(out2) } } prcs.close(); } mainForm.btnDisable.oncommand = function(id,event){ timer.disable() shared=false //变量,防止重复执行分享设备指令 unshared=false //变量,防止重复执行终止分享设备指令 mainForm.edit.text="定时器已经终止" } mainForm.btnEnable.oncommand = function(id,event){ timer.enable(); } mainForm.trackbar.setFrequency(1500) mainForm.trackbar.oncommand = function(id,event,pos){ if( pos ){ timer.setInterval(pos) } } mainForm.show(); return win.loopMessage();
代码逻辑不咋的严谨,仅供参考学习。
3 个回复 | 最后更新于 2022-04-12
登录后方可回帖
点赞
不管代码写的好不好
能分享就值得点赞![](/static/editor/dialogs/emotion/images/pp/i_f24.png)
写的都是用了心..