我这里利用aardio的bat批处理混合编程示例修改了一个界面, 获取到wifi密码后, 显示到edit编辑框内, 后面就可以方便的复制了.

如何写程序去测试wifi密码(wifi密码连接历史的工具)(1)

源码比较简单, 代码如下:

//RUNAS// import Fonts.fontAwesome; import win.ui; /*DSG{{*/ var mainForm = win.form(text="电脑WIFI密码获取工具";right=609;bottom=439) mainForm.add( btnExecute={cls="plus";text="电脑连接过的WIFI密码获取";left=15;top=380;right=286;bottom=425;align="left";bgcolor=-5197169;db=1;dl=1;font=LOGFONT(h=-16);iconStyle={align="left";font=LOGFONT(h=-16;name='FontAwesome');padding={left=20}};iconText='\uF17A';notify=1;textPadding={left=42};z=2}; editResult={cls="edit";left=15;top=13;right=598;bottom=370;db=1;dl=1;dr=1;dt=1;edge=1;hscroll=1;multiline=1;vscroll=1;z=1} ) /*}}*/ /*按钮皮肤{{*/ mainForm.btnExecute.skin({ background={ default=0xFF8FB2B0; hover=0xFF928BB3; disabled=0xFFCCCCCC; } }); /*}}*/ /*批处理指令字符串{{*/ var batStr = /*** @echo off title 批处理查看所有连接过的WiFi名称和密码 echo. & echo 请用管理员权限运行此批处理,否则可能无法获取到密码 echo. for /f "tokens=3*" %%i in ('netsh wlan show profiles ^| findstr "所有用户配置文件"') do ( call :GetPass %%i %%j ) pause goto :eof :GetPass echo,WiFi : %* setlocal enabledelayedexpansion for /f "delims=" %%a in ('netsh wlan show profile name^="%*" key^=clear ^| findstr "关键内容"') do ( rem echo,%%a set var=%%a set var1=!var:关键内容=密码! set var2=!var1: =! set var3=!var2:^:= : ! echo,!var3! ) echo,========================= endlocal goto :eof ***/ /*}}*/ import process.batch; mainForm.btnExecute.oncommand = function(id,event){ ////优先调用 64 位命令请改为 process.batch.wow64 var prcs = process.batch( batStr ); //开启等待动画 mainForm.btnExecute.disabledText = {'\uF254';'\uF251';'\uF252';'\uF253';'\uF250';text=''} //out 用于接收批处理的全部输出(包含错误输出), err 为错误信息(无错误为 null ) var out,err = prcs.readAll(); //可在参数 @1 中指定匹配模式查找指定字符串 mainForm.editResult.print(out); //关闭动画 mainForm.btnExecute.disabledText = null; } mainForm.show(); win.loopMessage();

原理上, 就是利用bat批处理获取电脑内所有记录, 然后显示到文本框.

本文首发: htmlayout.cn/t/21394

,