无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: mdyblog
打印 上一主题 下一主题

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

    [复制链接]
15391#
发表于 2020-11-22 11:14:57 | 只看该作者
好东西!但不能看得太懂!多看几次试试
回复

使用道具 举报

15392#
发表于 2020-11-22 14:39:39 | 只看该作者
本帖最后由 红毛樱木 于 2020-11-22 14:51 编辑

发现一个很奇怪的地方,不知道是用法不对,还是是BUG。
代码一:
关闭MAIN窗口后,不会执行MESS. OVER,后台进程卡住没退出
  1. ENVI^ EnviMode=1
  2. THREAD* -wait -here CALL @MAIN
  3. MESS. OVER
  4. _SUB MAIN,W800H600
  5. _END
复制代码



代码二:正常
  1. ENVI^ EnviMode=1
  2. THREAD* -wait CALL @MAIN
  3. MESS. OVER
  4. _SUB MAIN,W800H600
  5. _END
复制代码



------------------------
不知是否是THREAD -here的BUG,老大看下.

实测是2018-07-27开始有这个问题,这个日期之前的版本没问题

点评

PECMD2012.1.88.05.82Stable-180149测试202011D.7z 可以了。  详情 回复 发表于 2020-11-22 17:49
先用 CALL @ 初始化下。 ENVI^ EnviMode=1 _SUB WIN1,W287H254,新窗口1,,, _END CALL @ THREAD* -wait -here CALL @WIN1 MESS. OVER EXIT 测试正常 我看看能不能自动处理。  详情 回复 发表于 2020-11-22 16:59
回复

使用道具 举报

15393#
 楼主| 发表于 2020-11-22 16:59:43 | 只看该作者
红毛樱木 发表于 2020-11-22 14:39
发现一个很奇怪的地方,不知道是用法不对,还是是BUG。
代码一:
关闭MAIN窗口后,不会执行MESS. OVER, ...

先用 CALL @
初始化下。
ENVI^ EnviMode=1
_SUB WIN1,W287H254,新窗口1,,,
_END
CALL @
THREAD* -wait -here CALL @WIN1
MESS. OVER
EXIT
测试正常


我看看能不能自动处理。

点评

还有这种,不用THREAD* HERE,也不用&::a的情况下,能改&a的数据吗?  详情 回复 发表于 2020-11-22 17:15
回复

使用道具 举报

15394#
发表于 2020-11-22 17:15:54 | 只看该作者
mdyblog 发表于 2020-11-22 16:59
先用 CALL @
初始化下。
ENVI^ EnviMode=1
  1. ENVI^ EnviMode=1
  2. ENVI &a=1
  3. THREAD* -WAIT ENVI-ret &a=2
  4. MESS. %&a%
复制代码


还有这种,不用THREAD* HERE,也不用&::a的情况下,能改&a的数据吗?

点评

PECMD2012.1.88.05.82Stable-180149测试202011E.7z 也支持 在文件级这样使用。 (不是普通函数中)  详情 回复 发表于 2020-11-22 21:04
这样 用 ,*的函数, 或窗口內的变量 可以这样操作 _SUB FUN,* ENVI &A=1 THREAD* -wait ENVI &A=2 MESS. %&A% _END FUN  详情 回复 发表于 2020-11-22 17:45
回复

使用道具 举报

15395#
 楼主| 发表于 2020-11-22 17:45:51 | 只看该作者
本帖最后由 mdyblog 于 2020-11-22 17:46 编辑
红毛樱木 发表于 2020-11-22 17:15
还有这种,不用THREAD* HERE,也不用&::a的情况下,能改&a的数据吗?

这样 用 ,*的函数, 或窗口內的变量 可以这样操作



_SUB FUN,*
   ENVI &A=1
   THREAD* -wait ENVI &A=2
   MESS. %&A%
_END
FUN


而 -here 就是随处可以操作。
回复

使用道具 举报

15396#
 楼主| 发表于 2020-11-22 17:49:26 | 只看该作者
红毛樱木 发表于 2020-11-22 14:39
发现一个很奇怪的地方,不知道是用法不对,还是是BUG。
代码一:
关闭MAIN窗口后,不会执行MESS. OVER, ...

PECMD2012.1.88.05.82Stable-180149测试202011D.7z  可以了。 内部自动按需处理。

点评

测试通过。  发表于 2020-11-22 21:30
收到,晚点测试  详情 回复 发表于 2020-11-22 19:11
回复

使用道具 举报

15397#
发表于 2020-11-22 19:11:36 来自手机 | 只看该作者
mdyblog 发表于 2020-11-22 17:49
PECMD2012.1.88.05.82Stable-180149测试202011D.7z  可以了。 内部自动按需处理。

收到,晚点测试
回复

使用道具 举报

15398#
 楼主| 发表于 2020-11-22 21:04:53 | 只看该作者
红毛樱木 发表于 2020-11-22 17:15
还有这种,不用THREAD* HERE,也不用&::a的情况下,能改&a的数据吗?

PECMD2012.1.88.05.82Stable-180149测试202011E.7z

也支持  在文件级这样使用。 (不是普通函数中)

   SET &A=0
   THREAD* -wait ENVI &A=2
   MESS. A:[%&A%]


点评

M大,最新版的普通函数不能这样传递是吧? 这样感觉还是很绕,容易掉坑里,能不能统一一下,在普通函数里也可以?  详情 回复 发表于 2020-11-23 22:09
测试通过。 ---------------------------- 测试通过,这下方便了。一直想要这种效果。  详情 回复 发表于 2020-11-22 21:31
回复

使用道具 举报

15399#
发表于 2020-11-22 21:31:40 | 只看该作者
mdyblog 发表于 2020-11-22 21:04
PECMD2012.1.88.05.82Stable-180149测试202011E.7z

也支持  在文件级这样使用。 (不是普通函数中)

测试通过。
----------------------------
测试通过,这下方便了。一直想要这种效果。
回复

使用道具 举报

15400#
发表于 2020-11-22 22:49:12 | 只看该作者
本帖最后由 红毛樱木 于 2020-11-22 22:54 编辑

今天的两个版本好像都对THREAD* -HERE的层级关系引入了BUG


  1. ENVI^ ENVIMODE=1
  2. CALL @MAIN
  3. _SUB MAIN,W800H600
  4.     SWIN -:&Backup_Restore,L1T50W800H600,,
  5.     THREAD* -HERE -WAIT CALL ABC    //失败
  6.     //THREAD* -WAIT CALL ABC    //成功
  7. _END

  8. _SUB &Backup_Restore,W800H600,,,,:0xFFFFFF
  9.     LABE &Label1,L20T280W128H48,请点击"打开"按钮以浏览文件。
  10. _END

  11. _SUB ABC
  12.     ENVI @&Backup_Restore:&Label1=test
  13. _END
复制代码


点评

控件的操作 不一样。 比较复杂。 看看包内的DOC文档  详情 回复 发表于 2020-11-22 22:57
回复

使用道具 举报

15401#
 楼主| 发表于 2020-11-22 22:57:24 | 只看该作者
红毛樱木 发表于 2020-11-22 22:49
今天的两个版本好像都对THREAD* -HERE的层级关系引入了BUG

控件的操作 不一样。 比较复杂。 看看包内的DOC文档

点评

发现层级发生了变化,需要 才成功。  详情 回复 发表于 2020-11-22 23:07
今天之前的版本都OK的,今天更新之后的都不行。  详情 回复 发表于 2020-11-22 22:58
回复

使用道具 举报

15402#
发表于 2020-11-22 22:58:57 | 只看该作者
本帖最后由 红毛樱木 于 2020-11-22 23:10 编辑
mdyblog 发表于 2020-11-22 22:57
控件的操作 不一样。 比较复杂。 看看包内的DOC文档

今天之前的版本都OK的,今天更新之后的都不行。
--------------------
这种用法都是错的么。。。


回复

使用道具 举报

15403#
发表于 2020-11-22 23:07:06 | 只看该作者
本帖最后由 红毛樱木 于 2020-11-22 23:14 编辑
mdyblog 发表于 2020-11-22 22:57
控件的操作 不一样。 比较复杂。 看看包内的DOC文档

发现层级发生了变化,需要
  1. ENVI @-:-:&Backup_Restore:&Label1=test
复制代码

才成功。
---------------------------------------------------
THREAD* -WAIT时
ENVI @-:&Backup_Restore:&Label1=test

ENVI @&Backup_Restore:&Label1=test
都可以


THREAD* -WAIT -HERE时
只有
ENVI @-:-:&Backup_Restore:&Label1=test
才可以
-------------------------------------------------------
是不是可以理解为之前的THREAD*和THREAD* -HERE没有层级关系,都有BUG,今天修复了。但是这里面的层级关系好像也不怎么准,有点乱。


点评

这就对了。 -HERE 时 时当前的孩子。 这样多一级。 CALL ABC 有多一级(函数)。 所以 要会退2级, -:-: ENVI @-:-:&Backup_Restore:&Label1=test--2 没有 -HERE时, THTEAD* 不管在那儿调用 , 都是固  详情 回复 发表于 2020-11-22 23:20
回复

使用道具 举报

15404#
 楼主| 发表于 2020-11-22 23:20:37 | 只看该作者
红毛樱木 发表于 2020-11-22 23:07
发现层级发生了变化,需要

才成功。

这就对了。
-HERE 时  时当前的孩子。 这样多一级。
CALL ABC 有多一级(函数)。
所以 要会退2级,  -:-:
ENVI @-:-:&Backup_Restore:&Label1=test--2

没有 -HERE时,  THTEAD*   不管在那儿调用 , 都是固定 连到 窗口上;就象 直接站在窗口上 操作控件。

点评

好像真有问题,M大有空确认下:代码一:  详情 回复 发表于 2020-11-23 01:07
THREAD* -WAIT时 ENVI @-:&Backup_Restore:&Label1=test 和 ENVI @&Backup_Restore:&Label1=test 都可以 这个怎么理解呢?  详情 回复 发表于 2020-11-22 23:24
回复

使用道具 举报

15405#
发表于 2020-11-22 23:24:19 | 只看该作者
本帖最后由 红毛樱木 于 2020-11-22 23:34 编辑
mdyblog 发表于 2020-11-22 23:20
这就对了。
-HERE 时  时当前的孩子。 这样多一级。
CALL ABC 有多一级(函数)。

THREAD* -WAIT时
ENVI @-:&Backup_Restore:&Label1=test

ENVI @&Backup_Restore:&Label1=test
都可以
这个怎么理解呢?
--------------------------
这个好像一直都可以两种方式一起用,我试了之前的版本也可以两种用。不知道算不算潜在的问题。
回复

使用道具 举报

15406#
发表于 2020-11-23 01:07:05 | 只看该作者
本帖最后由 红毛樱木 于 2020-11-23 01:50 编辑
mdyblog 发表于 2020-11-22 23:20
这就对了。
-HERE 时  时当前的孩子。 这样多一级。
CALL ABC 有多一级(函数)。

好像真有问题,M大有空确认下:代码一:
  1. ENVI^ ENVIMODE=1
  2. CALL @MAIN
  3. _SUB MAIN,W800H600
  4.     TABS &MAIN_TABS,L0T0W620H410,Page1:-P1:Wimgapi:拥有Imagex.exe的所有功能;Page3:P3:注册及设置:设置Wim&&Esd临时工作目录等参数,
  5.     EDIT -rich &IndexNum_Name_EDIT,L443T281W160H20,,,
  6. _END

  7. _SUB Page1
  8.     ITEM &Button3,L32T108W300H54,请点击此按钮测试,THREAD* -WAIT CALL GetWIM_ESD_Info,   //不行
  9.     //ITEM &Button3,L32T108W300H54,请点击此按钮测试,THREAD* -WAIT -HERE CALL GetWIM_ESD_Info,   //行
  10.     //ITEM &Button3,L32T108W300H54,请点击此按钮测试,CALL GetWIM_ESD_Info,   //行
  11. _END

  12. _SUB GetWIM_ESD_Info,*
  13.     CALL GetThisIndexInfo
  14. _END

  15. _SUB GetThisIndexInfo,*
  16.     ENVI @&IndexNum_Name_EDIT=1231231231
  17.     MESS. %&ERROR%
  18. _END
复制代码


PECMD2012.1.88.05.82Stable-180149测试202011D.7z            正常
PECMD2012.1.88.05.82Stable-180149测试202011E.7z            不正常



点评

试试 : PECMD2012.1.88.05.82Stable-180149测试202011F.7z  详情 回复 发表于 2020-11-23 08:06
回复

使用道具 举报

15407#
 楼主| 发表于 2020-11-23 08:06:42 | 只看该作者
红毛樱木 发表于 2020-11-23 01:07
好像真有问题,M大有空确认下:代码一:

试试 :  PECMD2012.1.88.05.82Stable-180149测试202011F.7z

点评

上面15404#讨论的这段代码,也正常了,恢复如初了吗? 这个也正常了。  详情 回复 发表于 2020-11-23 10:24
现在测试正常了。  详情 回复 发表于 2020-11-23 10:22
回复

使用道具 举报

15408#
发表于 2020-11-23 10:22:26 | 只看该作者
mdyblog 发表于 2020-11-23 08:06
试试 :  PECMD2012.1.88.05.82Stable-180149测试202011F.7z

现在测试正常了。
回复

使用道具 举报

15409#
发表于 2020-11-23 10:24:33 | 只看该作者
mdyblog 发表于 2020-11-23 08:06
试试 :  PECMD2012.1.88.05.82Stable-180149测试202011F.7z
  1. ENVI^ ENVIMODE=1
  2. CALL @MAIN
  3. _SUB MAIN,W800H600
  4.     SWIN -:&Backup_Restore,L1T50W800H600,,
  5.     THREAD* -HERE -WAIT CALL ABC    //失败
  6.     //THREAD* -WAIT CALL ABC    //成功
  7. _END

  8. _SUB &Backup_Restore,W800H600,,,,:0xFFFFFF
  9.     LABE &Label1,L20T280W128H48,请点击"打开"按钮以浏览文件。
  10. _END

  11. _SUB ABC
  12.     ENVI @&Backup_Restore:&Label1=test
  13. _END
复制代码
上面15404#讨论的这段代码,也正常了,恢复如初了吗?


-----------------------------------------------------------------------------------------------------------------------
  1. SET &A=0
  2.    THREAD* -wait ENVI &A=2
  3.    MESS. A:[%&A%]
复制代码


这个也正常了。

点评

THREAD* -here -wait 结合了 THREAD* -wait 的特性。 所以可以方便操作了。  详情 回复 发表于 2020-11-23 10:49
回复

使用道具 举报

15410#
发表于 2020-11-23 10:29:51 | 只看该作者
感谢!~~?~
回复

使用道具 举报

15411#
 楼主| 发表于 2020-11-23 10:49:42 | 只看该作者
红毛樱木 发表于 2020-11-23 10:24
上面15404#讨论的这段代码,也正常了,恢复如初了吗?

THREAD* -here -wait
结合了 THREAD* -wait 的特性。 所以可以方便操作了。

点评

老大,提升一下版本号吧,二次开发可以避免小白用错版本  详情 回复 发表于 2020-11-23 10:54
好的。这样不用改以前的代码了。  详情 回复 发表于 2020-11-23 10:53
回复

使用道具 举报

15412#
发表于 2020-11-23 10:53:27 来自手机 | 只看该作者
mdyblog 发表于 2020-11-23 10:49
THREAD* -here -wait
结合了 THREAD* -wait 的特性。 所以可以方便操作了。

好的。这样不用改以前的代码了。

点评

除非改错。 总保持兼容之前的。  详情 回复 发表于 2020-11-23 10:59
回复

使用道具 举报

15413#
发表于 2020-11-23 10:54:10 | 只看该作者
mdyblog 发表于 2020-11-23 10:49
THREAD* -here -wait
结合了 THREAD* -wait 的特性。 所以可以方便操作了。

老大,提升一下版本号吧,二次开发可以避免小白用错版本

点评

好的。 等大家 测试下。  详情 回复 发表于 2020-11-23 10:55
回复

使用道具 举报

15414#
 楼主| 发表于 2020-11-23 10:55:26 | 只看该作者
527104427 发表于 2020-11-23 10:54
老大,提升一下版本号吧,二次开发可以避免小白用错版本

好的。 等大家 测试下。

点评

请教老大,有没有办法判断一个磁盘是否SSD呢?我一直想当然地用以下代码来判断,查找-devid返回中是否有“SSD”关键字: part -devid list disk 1,&a mess. %&a% 但这方法肯定不靠谱,最近就发现一块固态硬盘  详情 回复 发表于 2020-11-23 22:26
回复

使用道具 举报

15415#
 楼主| 发表于 2020-11-23 10:59:53 | 只看该作者
红毛樱木 发表于 2020-11-23 10:53
好的。这样不用改以前的代码了。

除非改错。 总保持兼容之前的。
回复

使用道具 举报

15416#
发表于 2020-11-23 19:41:26 来自手机 | 只看该作者

总线类型 BusTypeUnknown = 0   BusTypeScsi=1, BusTypeAtapi, BusTypeAta, BusType1394, BusTypeSsa, BusTypeFibre, BusTypeUsb, BusTypeRAID, BusTypeiScsi, BusTypeSas, BusTypeSata, BusTypeSd, BusTypeMmc, BusTypeVirtual,BusTypeFileBackedVirtual,BusTypeSpaces,BusTypeNvme,BusTypeSCM,BusTypeUfs,BusTypeMax,BusTypeMaxReserved

这个资料可以更新一下
回复

使用道具 举报

15417#
发表于 2020-11-23 22:09:58 | 只看该作者
本帖最后由 红毛樱木 于 2020-11-23 22:24 编辑
mdyblog 发表于 2020-11-22 21:04
PECMD2012.1.88.05.82Stable-180149测试202011E.7z

也支持  在文件级这样使用。 (不是普通函数中)
  1. _SUB TEST
  2.     ENVI &a=
  3.     THREAD* -WAIT ENVI &a=1
  4.     MESS. %&a%
  5. _END
  6. CALL TEST
复制代码


M大,普通函数不能这样传递是吧?
这样感觉还是很绕,容易掉坑里,能不能统一一下,在普通函数里也可以?
因为这种本身就是想开一个线程去执行代码的。
如果不是这种效果,还不如直接THREAD不带*了。

----------------------------------------------
如果有什么理解比较片面的地方,请M大指正一下。在THREAD说明里说清楚这几个注意事项
回复

使用道具 举报

15418#
发表于 2020-11-23 22:26:43 | 只看该作者
本帖最后由 527104427 于 2020-11-24 11:22 编辑
mdyblog 发表于 2020-11-23 10:55
好的。 等大家 测试下。


请教老大,有没有办法判断一个磁盘是否SSD呢?我一直想当然地用以下代码来判断,查找-devid返回中是否有“SSD”关键字:
part -devid list disk 1,&a
mess. %&a%

但这方法肯定不靠谱,最近就发现一块固态硬盘并没有“SSD”字样:








点评

目前大家公认的办法就是读SMART表判断有没有TRIM,但是还有不准的时候。如果要PECMD来搞,等于一个新领域了吧。。。代码量估计不小  详情 回复 发表于 2020-11-23 22:48
回复

使用道具 举报

15419#
发表于 2020-11-23 22:48:36 | 只看该作者
527104427 发表于 2020-11-23 22:26
请教老大,有没有办法判断一个磁盘是否SSD呢?我一直想当然地用以下代码来判断,查找-devid返回中是否 ...

目前大家公认的办法就是读SMART表判断有没有TRIM,但是还有不准的时候。如果要PECMD来搞,等于一个新领域了吧。。。代码量估计不小
回复

使用道具 举报

15420#
发表于 2020-11-24 09:11:01 | 只看该作者
与界面有关的_SUB函数,或者_SUB函数内调用的API可能和界面操作有关

这两种情况是不是都可以理解为_SUB函数要带“,*”有持久栈?
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-28 18:55

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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