无忧启动论坛

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

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

    [复制链接]
15361#
发表于 2020-11-21 14:38:32 | 只看该作者
mdyblog 发表于 2020-11-21 14:19
继续测试了下。 对 MS的编译器, long doule 和 double,  在2进制内存上 也 完全一样。

ENVI-ldouble & ...

了解了,ldouble和double一样了  
回复

使用道具 举报

15362#
发表于 2020-11-21 14:39:59 | 只看该作者
本帖最后由 红毛樱木 于 2020-11-21 15:02 编辑
mdyblog 发表于 2020-11-21 14:35
看来我这机器 EFI FW 有点低。

不知道怎么获取UEFI固件的版本信息(规范的版本,不是BIOS的版本那种信息),没翻到资料。
回复

使用道具 举报

15363#
发表于 2020-11-21 17:45:46 | 只看该作者
mdyblog 发表于 2020-11-21 12:12
返回的 是2进制普通数据。 具体 怎么解, 得 看居图变量的说明。普通EFI字符串变量, 一般就当Wstring看即 ...

@TEAM~ CALC -base=16  #Inx=%inx% | 0x100000~ MSTR Inx=5,4,%Inx%
这句意思是不是说,“|” 是CALC的运算符,“~” 才是分界符?

另外,M大能弄个简单的示例来设置UEFI启动项吗,感谢。



点评

1--2交换顺序 效果: [attachimg]468924[/attachimg]  详情 回复 发表于 2020-11-21 21:39
CALC -base=16 #Inx=%inx% | 0x100000 MSTR Inx=5,4,%Inx% 是的。 设置启动项,流程我知道。具体还没写...... 先用BootOrder获取数据 再修改BootOrder数据 再写回去  详情 回复 发表于 2020-11-21 17:57
回复

使用道具 举报

15364#
发表于 2020-11-21 17:46:14 | 只看该作者
红毛樱木 发表于 2020-11-21 13:21
展示下,我前几天拆数据的进度。本来打算出个终极工具

没想到M大直接内置到PECMD里的, ...

太高端了,我已经玩不转了。
回复

使用道具 举报

15365#
发表于 2020-11-21 17:57:39 | 只看该作者
527104427 发表于 2020-11-21 17:45
@TEAM~ CALC -base=16  #Inx=%inx% | 0x100000~ MSTR Inx=5,4,%Inx%
这句意思是不是说,“|” 是CALC的 ...

CALC -base=16  #Inx=%inx% | 0x100000
MSTR Inx=5,4,%Inx%
是的。
设置启动项,流程我知道。具体还没写......

先用BootOrder获取数据
再修改BootOrder数据
再写回去
回复

使用道具 举报

15366#
 楼主| 发表于 2020-11-21 21:39:32 | 只看该作者
本帖最后由 mdyblog 于 2020-11-21 21:43 编辑
527104427 发表于 2020-11-21 17:45
@TEAM~ CALC -base=16  #Inx=%inx% | 0x100000~ MSTR Inx=5,4,%Inx%
这句意思是不是说,“|” 是CALC的 ...

BootOrder_EFI-Set.wcs.zip (927 Bytes, 下载次数: 9)

ChOrderEFIBoot 2 3 //2 3 交换顺序

效果:


点评

一会SET一会ENVI 貌似不太利于新手学习呀。 建议以后示例代码统一用PECMD2012新规范 首行用 ENVI^ ENVIMODE=1 去掉 ENVI^ ForceLocal=1 变量前面统一用& 比如%a%写成标准的%&a%,虽然%a%简单写法用ENV  详情 回复 发表于 2020-11-22 01:07
提个建议,pecmd内核每次更新的时候,内核版本号能否直接采用日期的方式,比如20201121 因为每次一个版本号用的太久了,而且改动的也比较多,  详情 回复 发表于 2020-11-21 22:11
太赞了! 我们瞎折腾好久的东西,老大瞬间就完成了。 虽然有帮助界面,但还得结合示例才能恍然大悟。  详情 回复 发表于 2020-11-21 22:07
回复

使用道具 举报

15367#
发表于 2020-11-21 22:07:20 | 只看该作者
mdyblog 发表于 2020-11-21 21:39
ChOrderEFIBoot 2 3 //2 3 交换顺序

效果:

太赞了!
我们瞎折腾好久的东西,老大瞬间就完成了。
虽然有帮助界面,但还得结合示例才能恍然大悟。


回复

使用道具 举报

15368#
发表于 2020-11-21 22:11:38 来自手机 | 只看该作者
mdyblog 发表于 2020-11-21 21:39
ChOrderEFIBoot 2 3 //2 3 交换顺序

效果:

提个建议,pecmd内核每次更新的时候,内核版本号能否直接采用日期的方式,比如20201121

因为每次一个版本号用的太久了,而且改动的也比较多,
回复

使用道具 举报

15369#
发表于 2020-11-22 01:07:13 | 只看该作者
mdyblog 发表于 2020-11-21 21:39
ChOrderEFIBoot 2 3 //2 3 交换顺序

效果:

一会SET一会ENVI
貌似不太利于新手学习呀。

建议以后示例代码统一用PECMD2012新规范
首行用
ENVI^ ENVIMODE=1
去掉
ENVI^ ForceLocal=1


变量前面统一用&
比如%a%写成标准的%&a%,虽然%a%简单写法用ENVI^ ForceLocal=1后能和%&a%一样,但是还是比较绕。


不统一,很难推广PECMD的使用。


点评

语法要外行(码农)人也能看懂,才适合推广。。 比如我学过点VB的皮毛,看别人各种语言写的程序源码,有1%是能看懂的 对我来说1%能看懂就大用处了  详情 回复 发表于 2020-11-22 10:49
回复

使用道具 举报

15370#
发表于 2020-11-22 10:49:42 | 只看该作者
红毛樱木 发表于 2020-11-22 01:07
一会SET一会ENVI
貌似不太利于新手学习呀。

语法要外行(码农)人也能看懂,才适合推广。。
比如我学过点VB的皮毛,看别人各种语言写的程序源码,有1%是能看懂的
对我来说1%能看懂就大用处了
回复

使用道具 举报

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

使用道具 举报

15372#
发表于 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
回复

使用道具 举报

15373#
 楼主| 发表于 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
回复

使用道具 举报

15374#
发表于 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
回复

使用道具 举报

15375#
 楼主| 发表于 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 就是随处可以操作。
回复

使用道具 举报

15376#
 楼主| 发表于 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
回复

使用道具 举报

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

收到,晚点测试
回复

使用道具 举报

15378#
 楼主| 发表于 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
回复

使用道具 举报

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

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

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

使用道具 举报

15380#
发表于 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
回复

使用道具 举报

15381#
 楼主| 发表于 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
回复

使用道具 举报

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

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


回复

使用道具 举报

15383#
发表于 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
回复

使用道具 举报

15384#
 楼主| 发表于 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
回复

使用道具 举报

15385#
发表于 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
都可以
这个怎么理解呢?
--------------------------
这个好像一直都可以两种方式一起用,我试了之前的版本也可以两种用。不知道算不算潜在的问题。
回复

使用道具 举报

15386#
发表于 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
回复

使用道具 举报

15387#
 楼主| 发表于 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
回复

使用道具 举报

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

现在测试正常了。
回复

使用道具 举报

15389#
发表于 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
回复

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2026-1-21 14:06

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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