找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: mdyblog

[更新376#2825]PECMD2012.1.80.13_Win32_64.多窗口多线程.裸机系统2.3.3.1+18M酷M...

   火... [复制链接]
发表于 2013-6-4 15:59:03 | 显示全部楼层
本帖最后由 diannao338 于 2013-6-4 16:01 编辑
mdyblog 发表于 2013-6-4 14:31
-17  可以 正常关闭。
date a h 也正常了。


那个 kill \   上面的测试代码没问题
那个loop段改成其他操作还是'卡',比如
_SUB doit
kill \%name%
pcip ,,,,=本地连接
mess aaa
_END

是否每个命令都要改啊? 量大就不用改了

THREAD call 貌似可以,我再试试

点评

不卡啊, -17. x10.wcs: envi name=新窗口 WIN1 _SUB WIN1,W289H311,%name% ITEM ITEM2,L72T21W60H30,KILL,call doit _END _SUB doit kill \%name% pcip ,,,,=本地连接 mess aaa _END  详情 回复 发表于 2013-6-4 16:44
回复

使用道具 举报

 楼主| 发表于 2013-6-4 16:44:39 | 显示全部楼层
本帖最后由 mdyblog 于 2013-6-4 16:54 编辑
diannao338 发表于 2013-6-4 15:59
那个 kill \   上面的测试代码没问题
那个loop段改成其他操作还是'卡',比如
_SUB doit


不卡啊, -17.  用 -18观感更好
x10.wcs:

envi name=新窗口
WIN1
_SUB WIN1,W289H311,%name%
    ITEM ITEM2,L72T21W60H30,KILL,call doit
_END
_SUB doit
    kill \%name%
    pcip ,,,,=本地连接
    mess aaa
_END
MESS ---END---  
回复

使用道具 举报

发表于 2013-6-4 23:09:19 | 显示全部楼层
本帖最后由 diannao338 于 2013-6-4 23:11 编辑

还发现一个诡异现象
下面由thread ,kill,calc 组成的,结果mess 那倒计时不管设多少都只有'1秒'的时间,而我去掉kill那行或去掉计时那些mess就正常了

  1. envi name=xpsp3测试
  2. Win1
  3. _SUB WIN1,W289H311,%name%
  4.     ITEM ITEM2,L72T21W60H30,确定,thread call doit
  5. _END
  6. _SUB doit
  7.     kill \%name%
  8. date h-1 h
  9. date t-1 min
  10. date s-1 s
  11. date m-1 ms
  12. calc _hs1=%h-1%*60*60+%t-1%*60+%s-1%.%m-1%
  13.     pcip *qkos ,,,,=无线网络连接,0
  14.     pcip *qkos ,,,,=无线网络连接,1
  15. date h-1 h
  16. date t-1 min
  17. date s-1 s
  18. date m-1 ms
  19. calc _hs2=%h-1%*60*60+%t-1%*60+%s-1%.%m-1%
  20. calc hs=%_hs2%-%_hs1% #2
  21. mess 完成\n耗时%hs%秒 @提示 #*5000
  22. _END
复制代码

点评

动态进度条+文本: CALL @WIN1 _SUB WIN1,W303H100,新窗口1, SET &p=20 PBAR PBAR1,L12T13W70H16,20 LABE -center -vcenter -trans -ncmd PBAR1_TEXT,L12T13W70H16,完成%&p%%%,,0x0000FF  详情 回复 发表于 2013-6-5 12:16
date _hs1 uptime pcip *qkos ,,,,=本地连接 2,0 pcip *qkos ,,,,=本地连接 2,1 date _hs2 uptime calc hs=%_hs2%-%_hs1% #2 mess 完成\n耗时%hs% ms @提示 #OK*5000  详情 回复 发表于 2013-6-5 01:07
回复

使用道具 举报

 楼主| 发表于 2013-6-5 01:07:03 | 显示全部楼层
本帖最后由 mdyblog 于 2013-6-5 12:39 编辑
diannao338 发表于 2013-6-4 23:09
还发现一个诡异现象
下面由thread ,kill,calc 组成的,结果mess 那倒计时不管设多少都只有'1秒'的时间,而我 ...

   date  _hs1 uptime
    pcip *qkos ,,,,=无线网络连接,0
    pcip *qkos ,,,,=无线网络连接,1
    date  _hs2 uptime
    calc hs=%_hs2%-%_hs1% #2
    mess 完成\n耗时%hs% ms @提示 #OK*5000


////////
读时间需要一次拿完, 不要分次拿在瓶醋。
/////////////////
哦, 你说的是 MESS 的超时 不起作用?
是的。 你用的是THREAD 而不是THREAD*, 这样主线程不等子线程的。
主线程的唯一窗口 KILL 后, 主线程 进入终结状态,从而整个程序 进入终结状态。于是MESS 匆忙退出
如果 MESS 超时 是5001毫秒,退出的更快,一瞬间。
用THREAD* 或直接 CALL doit

其实标准的做法是:先隐藏,干完活再KILL。这样清楚多了。

envi name=xpsp3测试
Win1
_SUB WIN1,W289H311,%name%
    ITEM ITEM2,L72T21W60H30,确定,call doit
_END
_SUB doit
    ENVI @this.visable=0     //先隐藏,
    date  _hs1 uptime
    pcip *qkos ,,,,=本地连接 2,0
    pcip *qkos ,,,,=本地连接 2,1
    date  _hs2 uptime
    calc hs=(%_hs2% - %_hs1%) / 1000 #3
    mess 完成\n耗时%hs%秒 @提示 #OK*5000
    kill \             //干完活再KILL
_END
  
回复

使用道具 举报

 楼主| 发表于 2013-6-5 12:16:32 | 显示全部楼层
动态进度条+文本:


CALL @WIN1
_SUB WIN1,W303H100,新窗口1,
    SET &p=20
    PBAR PBAR1,L12T13W70H16,20
    LABE -center -vcenter -trans -ncmd PBAR1_TEXT,L12T13W70H16,完成%&p%%%,,0x0000FF
    TIME  ,1000, CALL OnTimer1
_END
_SUB OnTimer1
    CALC #&p=%&p% + 5
    IFEX $%&p%>100, SET p=0
    envi @PBAR1_TEXT=完成%&p%%%   //文本
    envi @PBAR1=%&p%        //进度
    ENVI @this.InvalidateRect=12;13;82;33;0  //重绘   
_END  

点评

1、建议楼主,这个进度条文本可否加一个开关,让它常驻显示,不要一闪一闪的刷新呢? 2、子窗口如何操作父窗口的控件?平行窗口如何进行控件互相通信以及变量互访和共享?  详情 回复 发表于 2013-6-6 10:47
回复

使用道具 举报

发表于 2013-6-6 09:24:41 | 显示全部楼层
本帖最后由 hhh333 于 2013-6-6 09:41 编辑

我当心的问题终于出现了,有网友的系统中有很多硬盘,有20个以上的盘符要分配,有的差不多占用到了Y:盘,于是挂载都没有盘了,造成光板PE!能不给show加一个参数,如-WYZ,就表示保留WYZ供PE系统使用,即使有的硬盘占用了WYZ也要拿出来。

看到了有“-”参数,为卸载盘符,可不可以这样用,自然达成以上目的:
TEAM show -1:-1|show -WYZ
或者TEAM show -1:-1|subj -W -Y -Z

点评

TEAM show * -1:-1| SHOW *- ,W:| SHOW *- ,X:| SHOW *- ,Y:| SHOW *- ,Z:  详情 回复 发表于 2013-6-6 10:05
回复

使用道具 举报

 楼主| 发表于 2013-6-6 10:05:41 | 显示全部楼层
hhh333 发表于 2013-6-6 09:24
我当心的问题终于出现了,有网友的系统中有很多硬盘,有20个以上的盘符要分配,有的差不多占用到了Y:盘,于 ...

TEAM show *  -1:-1| SHOW *-  ,W:| SHOW *-  ,X:|   SHOW *-   ,Y:|  SHOW *-   ,Z:

点评

老師您好.向您報告... 我就是那個當事者^^ 依您的改法.我先動手改了pecmd.ini如下 啟動後... 還是出現drvtype 於ram address .... read only狀況 進PE後...空空的! 貼個磁碟分配代號圖如下... 尚  详情 回复 发表于 2013-6-6 15:04
回复

使用道具 举报

 楼主| 发表于 2013-6-6 10:09:28 | 显示全部楼层
本帖最后由 mdyblog 于 2013-6-6 10:11 编辑
527104427 发表于 2013-6-6 09:57
尝试在正常的WIN7_X86下测试:

SUBJ -E:


>>在磁盘管理中是没有盘符的:
要兼容 磁盘管理等其他软件, 需要持久 加载卸载开关*
TEAM show *  -1:-1| SHOW *-  ,W:| SHOW *-  ,X:|   SHOW *-   ,Y:|  SHOW *-   ,Z:

SBUJ  *-   E:

// 持久 加载卸载 要慢些, 干的事 比较多。
回复

使用道具 举报

发表于 2013-6-6 10:47:01 | 显示全部楼层
mdyblog 发表于 2013-6-5 12:16
动态进度条+文本:

1、建议楼主,这个进度条文本可否加一个开关,让它常驻显示,不要一闪一闪的刷新呢?
2、子窗口如何操作父窗口的控件?平行窗口如何进行控件互相通信以及变量互访和共享?

点评

1>> 试过, 还是会闪的, 只是好点。 加了代码 好像不是很值得。 2》》 ENVI @父窗口名.SENDMSG= 消息号:.... 或 ENVI @@SENDMSG=父窗口名号:消息号: .... 平行窗口 也是如此。 共享: 访问他们的 共同  详情 回复 发表于 2013-6-6 11:22
回复

使用道具 举报

 楼主| 发表于 2013-6-6 11:22:31 | 显示全部楼层
本帖最后由 mdyblog 于 2013-6-6 11:26 编辑
2012yws@ 发表于 2013-6-6 10:47
1、建议楼主,这个进度条文本可否加一个开关,让它常驻显示,不要一闪一闪的刷新呢?
2、子窗口如何操作 ...


1>> 试过, 还是会闪的, 只是好点。  加了代码 好像不是很值得。

2》》
ENVI  @父窗口名.SENDMSG= 消息号:....

ENVI  @@SENDMSG=父窗口名号:消息号: ....

平行窗口  也是如此。
共享: 访问他们的 共同祖先(父亲。爷爷。。。) 的共享变量。

全局PE变量  和环境变量 总是可共享的。

示例程序中 搜索 ”.SENDMSG=“   “@@SENDMSG=”  可找到
回复

使用道具 举报

 楼主| 发表于 2013-6-6 12:16:59 | 显示全部楼层
527104427 发表于 2013-6-6 11:48
保存为WCS文件后,双击无反应,其它WCS都可以运行的。

拖到PECMD上也无反应,在PECMD窗口中输入则可以, ...



CALL @WIN1

_SUB WIN1,W303H100,新窗口1,
    SET &p=0
    SET &dat=  //解压的数据
    PBAR PBAR1,L12T13W70H16,0
    //LABE -center -vcenter -trans -ncmd PBAR1_TEXT,L12T13W70H16,完成%&p%%%,,0x0000FF
    ITEM ITEM1,L24T34W60H30,解压,THREAD* CALL OnJieYa,
_END

_SUB SetJinDu
        envi @PBAR1=%1        //进度
        //envi @PBAR1_TEXT=%2  //文本
       //NVI @this.InvalidateRect=12;13;82;33;0  //重绘   
_END  
_SUB OnJieYa
    MDIR  "%CurDir%\1"
//    EXEC* --cmd::1000:OnCheck  &dat=!%CurDir%\7z.exe x "RocketDock.7z" -y -aos -o"%CurDir%\1\"
    EXEC* --cmd::1000:OnCheck  &dat=PECMD wait 10000    //模拟 ,运行 10秒
    SetJinDu   100  //完成
_END

_SUB OnCheck  //分析  解压数据 &dat  ,推进进度
    //太复杂, 写个模拟的吧,自动加10
    CALC #&p=%&p% + 10
    IFEX $%&p%>100, SET p=100
    SetJinDu  %&p%
_END  

//分析 7z.exe 的输出, 先要 输出 列表, 再根据 实际进度,判断 进度%,
//由于7z.exe 本身的原因(带有输出C缓冲), 输出 是一段一段的拉出来的, 二不是 实时流出来的。 小的文件,直到最后才一下子显示最终结果:100%,没有中间结果。
回复

使用道具 举报

 楼主| 发表于 2013-6-6 13:09:22 | 显示全部楼层
本帖最后由 mdyblog 于 2013-6-6 13:11 编辑
527104427 发表于 2013-6-6 12:52
原来要自己分析 &dat  ,呵呵,无能为力了


输出 &dat 的是 文件名。
先LIST 出每个文件名的 长度。
再根据 实时 输出解压的文件名&dat, 累加其长度, 就 可知道 进度% 了
比如 a=1M  B=2M  C=3M
输出 完成a b
则 进度% =  100*(1+2) / (1+2+3)=50
回复

使用道具 举报

发表于 2013-6-6 15:04:24 | 显示全部楼层
mdyblog 发表于 2013-6-6 10:05
TEAM show *  -1:-1| SHOW *-  ,W:| SHOW *-  ,X:|   SHOW *-   ,Y:|  SHOW *-   ,Z:

老師您好.向您報告...

我就是那個當事者^^
依您的改法.我先動手改了pecmd.ini如下
snap0796.png
啟動後...
還是出現drvtype 於ram address .... read only狀況
snap0790.png

進PE後...空空的!
貼個磁碟分配代號圖如下...
snap0795.png

尚未解決...



点评

哦, X: 不要卸载了。 那是PE!  详情 回复 发表于 2013-6-6 16:00
回复

使用道具 举报

发表于 2013-6-6 15:40:54 | 显示全部楼层
上一下图:
Windows 7 -EFI-2013-06-06-15-37-13.png
点桌面那个装载外置,没有任何反映,也即找不到,快捷方式已经在图上了,用的是最新6月3日的版本。

点评

我试了, 我这可以。 WINPE.INI: MESS %CurFile% %PECMDVER% @#OK 快捷键: PECMD.EXE LOAD \H3PE\WINPE.INI 结果提示 : 【E:\H3PE\WINPE.INI 201201790000】  详情 回复 发表于 2013-6-6 16:07
回复

使用道具 举报

 楼主| 发表于 2013-6-6 16:00:44 | 显示全部楼层
peterpanheaven 发表于 2013-6-6 15:04
老師您好.向您報告...

我就是那個當事者^^

哦, X:  不要卸载了。 那是PE!
回复

使用道具 举报

 楼主| 发表于 2013-6-6 16:07:11 | 显示全部楼层
hhh333 发表于 2013-6-6 15:40
上一下图:

点桌面那个装载外置,没有任何反映,也即找不到,快捷方式已经在图上了,用的是最新6月3日的 ...

我试了, 我这可以。
WINPE.INI:
MESS %CurFile% %PECMDVER% @#OK

快捷键:
PECMD.EXE LOAD \H3PE\WINPE.INI
结果提示 :
【E:\H3PE\WINPE.INI 201201790000】

点评

难道搜索不管后面的盘吗?  详情 回复 发表于 2013-6-6 16:41
我说老大,盘符少时肯定没有问题,我用虚拟机做了20个盘,盘符会从C->V,外置光盘是W,就找不到了。  详情 回复 发表于 2013-6-6 16:19
回复

使用道具 举报

发表于 2013-6-6 16:19:57 | 显示全部楼层
本帖最后由 hhh333 于 2013-6-6 16:22 编辑
mdyblog 发表于 2013-6-6 16:07
我试了, 我这可以。
WINPE.INI:
MESS %CurFile% %PECMDVER% @#OK


我说老大,盘符少时肯定没有问题,我用虚拟机做了20个盘,盘符会从C->V,外置光盘是W,就找不到了。
进系统时是逆序找的,没找到,快捷方式是load \XXX\XXX.INI的形式,应该是顺序找的也没反应。

点评

-21 已修正。 真亏了 你。 否则 还真发现不这么隐秘的BUG。  详情 回复 发表于 2013-6-6 16:48
回复

使用道具 举报

 楼主| 发表于 2013-6-6 16:20:19 | 显示全部楼层
527104427 发表于 2013-6-6 14:21
算了,搞不清楚。

这句怎么搞错了:FIND $0=%&::bX64%,mess 32!mess 64

-20  修正了
回复

使用道具 举报

 楼主| 发表于 2013-6-6 16:23:25 | 显示全部楼层
527104427 发表于 2013-6-6 14:21
算了,搞不清楚。

这句怎么搞错了:FIND $0=%&::bX64%,mess 32!mess 64

-20 PBAR 支持 文本设定:
进度条加文本2.WCS:

CALL @WIN1
_SUB WIN1,W303H100,新窗口1,
    SET &p=20
    PBAR PBAR1,L12T13W70H16,20,完成%&p%%%
    TIME  ,1000, CALL OnTimer1
_END
_SUB OnTimer1
    CALC #&p=%&p% + 5
    IFEX $%&p%>100, SET p=0
    envi @PBAR1=%&p%;完成%&p%%%        //进度
_END
  

见 HELP PBAR
删除文本: 文本为空(分号还是要的,否则为不修改文本)
回复

使用道具 举报

发表于 2013-6-6 16:41:52 | 显示全部楼层
mdyblog 发表于 2013-6-6 16:07
我试了, 我这可以。
WINPE.INI:
MESS %CurFile% %PECMDVER% @#OK

难道搜索不管后面的盘吗?
回复

使用道具 举报

 楼主| 发表于 2013-6-6 16:48:00 | 显示全部楼层
hhh333 发表于 2013-6-6 16:19
我说老大,盘符少时肯定没有问题,我用虚拟机做了20个盘,盘符会从C->V,外置光盘是W,就找不到了。
...

-21 已修正。
真亏了 你。 否则 还真发现不这么隐秘的BUG。

点评

这个不是我发现的,而是一个网友的变态机器有20个盘发现的。  详情 回复 发表于 2013-6-6 17:05
我刚才测试了,可能是查找计数的问题,往前面删几个盘就找到了。前面有19盘就找不到。  详情 回复 发表于 2013-6-6 17:04
回复

使用道具 举报

发表于 2013-6-6 17:04:06 | 显示全部楼层
mdyblog 发表于 2013-6-6 16:48
-21 已修正。
真亏了 你。 否则 还真发现不这么隐秘的BUG。

我刚才测试了,可能是查找计数的问题,往前面删几个盘就找到了。前面有19盘就找不到。

点评

最多19个盘符。  详情 回复 发表于 2013-6-6 17:08
回复

使用道具 举报

发表于 2013-6-6 17:05:08 | 显示全部楼层
mdyblog 发表于 2013-6-6 16:48
-21 已修正。
真亏了 你。 否则 还真发现不这么隐秘的BUG。

这个不是我发现的,而是一个网友的变态机器有20个盘发现的。
回复

使用道具 举报

 楼主| 发表于 2013-6-6 17:08:56 | 显示全部楼层
hhh333 发表于 2013-6-6 17:04
我刚才测试了,可能是查找计数的问题,往前面删几个盘就找到了。前面有19盘就找不到。


原来 最多19个盘符。

点评

感觉到DRVTYPE这个工具也是19个盘,怎么回事?  详情 回复 发表于 2013-6-6 17:51
哈哈,LZ这个19不知怎么来的,感觉到LZ编程的随意性很大啊。  详情 回复 发表于 2013-6-6 17:16
回复

使用道具 举报

发表于 2013-6-6 17:16:10 | 显示全部楼层
mdyblog 发表于 2013-6-6 17:08
原来 最多19个盘符。

哈哈,LZ这个19不知怎么来的,感觉到LZ编程的随意性很大啊。

点评

19是我 算出来的。 我当然 没有 设定什么个数限制。 这是一个曲折的 逻辑 链。 是别的地方传递过来的限制,很隐晦的限制。 编出的程序,总有个确定的形态(相态)。 从而实际处处都有个限制。 而每个限制, 都在向  详情 回复 发表于 2013-6-6 17:52
回复

使用道具 举报

发表于 2013-6-6 17:19:15 | 显示全部楼层
感謝兩位大師的辛勞!!

Orz!! Orz!! Orz!!
回复

使用道具 举报

发表于 2013-6-6 17:51:56 | 显示全部楼层
mdyblog 发表于 2013-6-6 17:08
原来 最多19个盘符。

感觉到DRVTYPE这个工具也是19个盘,怎么回事?

点评

FORM DriveType=W: FORM V1=* FORM V2=* MESS W:%DriveType% \n%V1% \n%V2% 结果: W:DRIVE_FIXED C:|D:|E:|F:|G:|H:|I:|J:|K:|L:|M:|N:|O:|P:|Q:|R:|S:|T:|U:|V:|W: C:|D:|E:|F:|G:|H:|I:|J:|K:|L:|  详情 回复 发表于 2013-6-6 17:59
回复

使用道具 举报

 楼主| 发表于 2013-6-6 17:52:29 | 显示全部楼层
本帖最后由 mdyblog 于 2013-6-6 17:54 编辑
hhh333 发表于 2013-6-6 17:16
哈哈,LZ这个19不知怎么来的,感觉到LZ编程的随意性很大啊。


19是我 算出来的。 我当然 没有 设定什么个数限制。 这是一个曲折的 逻辑 链。 是别的地方传递过来的限制,很隐晦的限制。
编出的程序,总有个确定的形态(相态)。 又由于资源部能无限。 从而实际处处都有个不是很大的限制。
而每个限制, 都在向外扩展(辐射)。 最终的限制是 其总效果。
回复

使用道具 举报

 楼主| 发表于 2013-6-6 17:59:27 | 显示全部楼层
本帖最后由 mdyblog 于 2013-6-6 18:00 编辑
hhh333 发表于 2013-6-6 17:51
感觉到DRVTYPE这个工具也是19个盘,怎么回事?


FORM DriveType=W:


FORM  V1=*
FDRV   V2=*:
MESS W:%DriveType% \n%V1% \n%V2%
结果:
W:DRIVE_FIXED
C:|D:|E:|F:|G:|H:|I:|J:|K:|L:|M:|N:|O:|P:|Q:|R:|S:|T:|U:|V:|W:
C: D: E: F: G: H: I: J: K: L: M: N: O: P: Q: R: S: T: U: V: W:

你是最新的吗? 要不再下载吧。我上传了2次。
http://pan.baidu.com/share/link? ... &uk=3962464512#

点评

我是说DRVTYPE.EXE这个工具也有问题。  详情 回复 发表于 2013-6-6 18:33
回复

使用道具 举报

发表于 2013-6-6 18:33:42 | 显示全部楼层
mdyblog 发表于 2013-6-6 17:59
FORM DriveType=W:

我是说DRVTYPE.EXE这个工具也有问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1|闽公网安备35020302032614号 )

GMT+8, 2026-9-12 00:18

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表