|
本帖最后由 dos时代菜鸟 于 2019-7-19 06:48 编辑
diskpart 可以在 win7下驻留。
1.不用第二线程
2.利用 cmd /k 运行 diskpart 并将 diskpart 的结果传给一个文件
3.通过定时读取 结果文件的行数变化 判断命令是否运行完了
4.从结果文件中 提取指定部分 显示到 edit 控件。
diskpart5.txt
(1.54 KB, 下载次数: 1)
代码如下:
--------------------------------------------------
- //logs --2 * xx.log
- envi^ envimode=1
- envi result="%temp%\result.txt" //定义临时文件
- envi enter=0x0D 0x00 0x0A 0x00 //定义变量记录 回车符对应的 宽码
- exec -pid:cmdpid cmd.exe /k "diskpart.exe >%result% & exit" //方便调试 没有隐藏运行
- //exec -pid:cmdpid *cmd.exe /k "diskpart.exe >%result% & exit" //隐藏运行
- loop #0=0,
- {
- team envi lx=|envi pidx=|envi wid=
- wait 200
- find --forpid:%cmdpid% --wid*@. &lx
- mstr pidx,wid=<6><2>%lx%
- find #%pidx%=%cmdpid%,
- {
- calc -base=16 wid=%wid%
- exit loop
- }
- }
- call @cmd_win
- _Sub cmd_win,h410 w600 ,diskpart,call exit9
- edit-| cmd_edit, L10 T10 H280 w580,,,76
- edit cmd_edit1,L10 T295 h70 w520,,,0x20
- item cmd_but, L530 t329 h20 w50,Run,call send_diskpart
- _end
- _sub exit9
- code *,exit ,*-unicode,&lx
- forx * %&lx% %enter%,&xltr,ENVI @@SENDMSG=%WID%;0x102;%&xltr% //退出 diskpart
- kill *%cmdpid%
- file %result%
- _end
- _sub send_diskpart
- envi. &cmd_x=%cmd_edit1%
- read %result%,-1,&ln_0
- forx *NL cmd_x,&lx,
- {
- code *,%&lx% ,*-unicode,&lx
- read %result%,-1,&ln0
- forx * %&lx% %enter%,&xltr,ENVI @@SENDMSG=%WID%;0x102;%&xltr%
- loop #1=1,
- {
- wait 200
- read %result%,-1,&ln2
- find #%&ln2%>%&ln0%,exit loop
- }
- }
- read %result%,%&ln_0%+0,&result_x
- envi @cmd_edit=%&result_x%
- _end
复制代码
--------------------------------------------------------------------
|
|