无忧启动论坛

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

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

    [复制链接]
15361#
发表于 2020-11-9 18:27:07 | 只看该作者
本帖最后由 红毛樱木 于 2020-11-9 18:30 编辑
mdyblog 发表于 2020-11-9 17:12
>> GETF和WRIT.7z
PECMD2012.1.88.05.82Stable-180149测试202010F.7z
  1. SET$ &NL=0d 0a
  2. ENVI &a=1%&NL%
  3. mess. %&a%
  4. WRIT *v &a,+3,2
  5. mess. %&a%
复制代码
最终结果是2

行号用数值表示,"0"表示操作最后一行,行号设置不合理时 WinCMD 将不作任何操作。
M大看下,这种行号超过总体行数了,应该是不合理的吧?但是却替换被替换掉了

-----------------------
但是写文件的话效果又不一样了
WRIT %&CurDir%\a.txt,+3,2

最终结果是
1
2


点评

PECMD4.0 写文件 会怎么样?  详情 回复 发表于 2020-11-9 20:21
回复

使用道具 举报

15362#
 楼主| 发表于 2020-11-9 20:21:18 | 只看该作者
红毛樱木 发表于 2020-11-9 18:27
最终结果是2

行号用数值表示,"0"表示操作最后一行,行号设置不合理时 WinCMD 将不作任何操作。

PECMD4.0  写文件 会怎么样?

点评

不知道哎,很久没用了了。 个人感觉,行数超过整体文件总行了,应该写数据比较合适。实际使用中应该就这样。 比如一个10行的数据,在11行写一行数据实际就是等于追加一行。 比如一个10行的数据,在12行写一行数据  详情 回复 发表于 2020-11-9 20:57
回复

使用道具 举报

15363#
发表于 2020-11-9 20:57:15 来自手机 | 只看该作者
mdyblog 发表于 2020-11-9 20:21
PECMD4.0  写文件 会怎么样?

不知道哎,很久没用了了。
个人感觉,行数超过整体文件总行了,应该写数据比较合适。实际使用中应该就这样。
比如一个10行的数据,在11行写一行数据实际就是等于追加一行。
比如一个10行的数据,在12行写一行数据,就把11行写成空行再写第12行数据。

个人观点。
现在pecmd2012受pecmd4.0局限的太多了,pecmd4.0已经停更很久了,是不是可以考虑现在已经比较成熟了,抛弃pecmd4.0的一些陈旧格式

点评

PECMD2012.1.88.05.82Stable-180149测试202010G.7z 超出, 就在文件尾部(中间不加空行),和文件效果一致和4.0兼容。  详情 回复 发表于 2020-11-9 23:13
回复

使用道具 举报

15364#
 楼主| 发表于 2020-11-9 23:13:17 | 只看该作者
红毛樱木 发表于 2020-11-9 20:57
不知道哎,很久没用了了。
个人感觉,行数超过整体文件总行了,应该写数据比较合适。实际使用中应该就这 ...

PECMD2012.1.88.05.82Stable-180149测试202010G.7z
超出, 就在文件尾部(中间不加空行),和文件效果一致和4.0兼容。

点评

暂时测试OK了。  详情 回复 发表于 2020-11-9 23:46
回复

使用道具 举报

15365#
发表于 2020-11-9 23:46:18 | 只看该作者
mdyblog 发表于 2020-11-9 23:13
PECMD2012.1.88.05.82Stable-180149测试202010G.7z
超出, 就在文件尾部(中间不加空行),和文件效果一 ...

暂时测试OK了。
回复

使用道具 举报

15366#
发表于 2020-11-12 08:54:14 来自手机 | 只看该作者
本帖最后由 红毛樱木 于 2020-11-16 13:40 编辑

m大,请问_sub窗口上自定义窗口图标,使用的是哪个API?我的精简版pe使用无效,想针对性的补文件解决这个问题
-------------------
已私聊

点评

本身不需要什么。 如果用内置图标, 不需要的。 BMP估计也几乎不需要。 主要是对文件格式的支持DLL。 1) Gdiplus 2) OLEPRO32.DLL ---》一些扩展图片类型 3)对应凸显类型需要的SLL  详情 回复 发表于 2020-11-21 07:11
回复

使用道具 举报

15367#
发表于 2020-11-16 13:41:00 | 只看该作者
  1. ENVI^ EnviMode=1
  2. ENVI &&WM_SETTEXT=0x000C
  3. CALL @MAIN
  4. _SUB MAIN,W800H600
  5.     LABE -center -trans &A22,L20T177W760H20,,,,
  6.     ENVI @MAIN.Visible=1
  7.     ENVI @&A22.ID=?&A22WIDL1
  8.     ENVI @@SENDMSG=:&SENDMSG_A;%&A22WIDL1%;%&WM_SETTEXT%;0;$SENDMSG_A......
  9.     //ENVI @窗口和控件名.SENDMSG=[:变量名;]消息号[;参数wPrm[;参数lPrm]]
  10.     ENVI @&A22.SENDMSG=:&SENDMSG_B;%&WM_SETTEXT%;0;$SENDMSG_B......
  11.     MESS. <%&SENDMSG_A%><%&SENDMSG_B%>
  12. _END
复制代码



回复

使用道具 举报

15368#
发表于 2020-11-19 16:27:50 | 只看该作者
  1. ENVI-longdouble &a=1

  2. ENVI?longdouble0 &a=&b

  3. MESS. %&b%
复制代码


M大看下,longdouble类型是不是不对,这里返回结果是        0x01

回复

使用道具 举报

15369#
 楼主| 发表于 2020-11-21 07:03:40 | 只看该作者
PECMD2012.1.88.05.82Stable-180149测试202011.7z

支持EFI变量操作和查询

┃    │    │※查询固件变量:ENVI ?[$.]返名[,属性名]=FVAR,变量名[;名字空间GUID] // 非pe变量或^或非. 返HEX┃
┃    │    │※操作固件变量:ENVI ?[-v][属性]=FVAR+[$#%],变量名[;名字空间GUID],值     //空值删除 -v:name ┃
┃    │    │                ENVI ?^&v=FVAR,BootOrder  //#字节模式 $16进制 %10进制                       ┃






ENVI?数据类型[s][0[@]] 源PE变量名=变量名[:偏移字节数]
s带符号

这样 负数  看的清楚


ENVI-char &a=0xFF

ENVI?chars &a=&bs
ENVI?char &a=&bu
MESS %&b% %&bu%  // -1 0xFF

点评

M大,EFI变量操作和查询能否写个示例?  详情 回复 发表于 2020-11-21 11:20
longdouble类型还是不支持哎,longdouble不是应该16个字节吗 这里返回的是0x1 4 理论上应该是0x00000000000000000000000000000001 16 吗  详情 回复 发表于 2020-11-21 08:37
回复

使用道具 举报

15370#
 楼主| 发表于 2020-11-21 07:11:28 | 只看该作者
红毛樱木 发表于 2020-11-12 08:54
m大,请问_sub窗口上自定义窗口图标,使用的是哪个API?我的精简版pe使用无效,想针对性的补文件解决这个问 ...

本身不需要什么。

如果用内置图标, 不需要的。windows标准图像类型 估计也几乎不需要。

主要是对文件格式的支持DLL。
1) Gdiplus
2) OLEPRO32.DLL ---》一些扩展图片类型
3)对应凸显类型需要的SLL
回复

使用道具 举报

15371#
发表于 2020-11-21 08:37:04 | 只看该作者
mdyblog 发表于 2020-11-21 07:03
PECMD2012.1.88.05.82Stable-180149测试202011.7z

支持EFI变量操作和查询
  1. ENVI-longdouble &a=1
  2. ENVI-addr ;&Len=&a
  3. ENVI?longdouble0 &a=&b
  4. MESS. %&b% %&Len%
复制代码


longdouble类型还是不支持哎,longdouble不是应该16个字节吗
这里返回的是0x1 4
理论上应该是0x00000000000000000000000000000001 16 吗

点评

继续测试了下。 对 MS的编译器, long doule 和 double, 在2进制内存上 也 完全一样。 ENVI-ldouble &a=1.5 ENVI-double &c=1.5 ENVI-addr ;&Len=&a ENVI?ldouble &a=&b GETF -bin &a,0#8,&ax GETF -bin  详情 回复 发表于 2020-11-21 14:19
1: 用 简写的 ldouble 不是longdouble ENVI-ldouble &a=1.1 ENVI-addr ;&Len=&a ENVI?ldouble &a=&b MESS. [%&b%] [%&Len%] [attachimg]468905[/attachimg] 2:之前的帖子 16进制 对整数 才有实际意义。  详情 回复 发表于 2020-11-21 12:25
回复

使用道具 举报

15372#
发表于 2020-11-21 11:20:48 | 只看该作者
mdyblog 发表于 2020-11-21 07:03
PECMD2012.1.88.05.82Stable-180149测试202011.7z

支持EFI变量操作和查询

M大,EFI变量操作和查询能否写个示例?

点评

[attachimg]468907[/attachimg] 展示下,我前几天拆数据的进度。本来打算出个终极工具 没想到M大直接内置到PECMD里的,不过一大堆资料要自己看拆数据的  详情 回复 发表于 2020-11-21 13:21
效果: [attachimg]468902[/attachimg]  详情 回复 发表于 2020-11-21 12:12
ENVI ?&v=FVAR,BootOrder 数据要自己拆的。 这里的数据类型应该是int  详情 回复 发表于 2020-11-21 11:33
回复

使用道具 举报

15373#
发表于 2020-11-21 11:33:41 来自手机 | 只看该作者
本帖最后由 红毛樱木 于 2020-11-21 13:14 编辑
527104427 发表于 2020-11-21 11:20
M大,EFI变量操作和查询能否写个示例?

ENVI ?&v=FVAR,BootOrder
数据要自己拆的。


来个简单的

获取当前启动项编号:
  1. ENVI ?&v=FVAR,BootCurrent
  2. ENVI?short0@ &v=&a
  3. MESS. %&a%
复制代码



回复

使用道具 举报

15374#
 楼主| 发表于 2020-11-21 12:12:36 | 只看该作者
本帖最后由 mdyblog 于 2020-11-21 12:56 编辑
527104427 发表于 2020-11-21 11:20
M大,EFI变量操作和查询能否写个示例?
返回的 是2进制普通数据。 具体 怎么解, 得 看居图变量的说明。普通EFI字符串变量, 一般就当Wstring看即可
ENVI  ?&V=FVAR,VNAME
MESS. %&V%
即可。

BootOrder_EFI.wcs.zip (739 Bytes, 下载次数: 12)
效果:


点评

@TEAM~ CALC -base=16 #Inx=%inx% | 0x100000~ MSTR Inx=5,4,%Inx% 这句意思是不是说,“|” 是CALC的运算符,“~” 才是分界符? 另外,M大能弄个简单的示例来设置UEFI启动项吗,感谢。  详情 回复 发表于 2020-11-21 17:45
回复

使用道具 举报

15375#
 楼主| 发表于 2020-11-21 12:25:28 | 只看该作者
本帖最后由 mdyblog 于 2020-11-21 12:47 编辑
红毛樱木 发表于 2020-11-21 08:37
longdouble类型还是不支持哎,longdouble不是应该16个字节吗
这里返回的是0x1 4
理论上应该是0x000 ...

1: 用 简写的  ldouble 不是longdouble
ENVI-ldouble &a=1.1
ENVI-addr ;&Len=&a
ENVI?ldouble &a=&b
MESS. [%&b%] [%&Len%]
实际 目前 编译器 还是用  8字节 的  double。 double  和 longdouble 都是8字节。

2:之前的帖子
16进制 对整数 才有实际意义。
浮点数 16进制没有实际意义。
你真要看看  16进制内存 , 用GETF 获得

回复

使用道具 举报

15376#
发表于 2020-11-21 13:21:03 | 只看该作者
527104427 发表于 2020-11-21 11:20
M大,EFI变量操作和查询能否写个示例?



展示下,我前几天拆数据的进度。本来打算出个终极工具

没想到M大直接内置到PECMD里的,不过一大堆资料要自己看拆数据的

点评

太高端了,我已经玩不转了。  详情 回复 发表于 2020-11-21 17:46
之前也是 直接脚本搞的。 太繁琐。 普通网友用就很麻烦。 所以内置下。 方便。 SecureBoot ENVI ?&v=FVAR,SecureBoot 我机器不支持, 返回203(没有这个变量)错误。  详情 回复 发表于 2020-11-21 14:12
回复

使用道具 举报

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

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

之前也是 直接脚本搞的。  你写到这样,太厉害了!!!
太繁琐。 普通网友用就很麻烦。 所以内置下。 方便。

SecureBoot
ENVI ?&v=FVAR,SecureBoot
我机器不支持, 返回203(没有这个变量)错误。

点评

资料上说 SecureBoot需要2.3.1以上的UEFI版本才支持。  详情 回复 发表于 2020-11-21 14:30
回复

使用道具 举报

15378#
 楼主| 发表于 2020-11-21 14:19:30 | 只看该作者
红毛樱木 发表于 2020-11-21 08:37
longdouble类型还是不支持哎,longdouble不是应该16个字节吗
这里返回的是0x1 4
理论上应该是0x000 ...

继续测试了下。 对 MS的编译器, long doule 和 double,  在2进制内存上 也 完全一样。

ENVI-ldouble &a=1.5
ENVI-double  &c=1.5
ENVI-addr ;&Len=&a
ENVI?ldouble &a=&b
GETF -bin  &a,0#8,&ax
GETF -bin  &c,0#8,&cx
FIND $%ax%=%cx%, SET same=相同! SET same=不相同

MESS. v[%&b%] len[%&Len%]  ldouble[%&ax%]  double[%cx%] , ldouble和double %same%

// v[1.500000] len[8]  ldouble[0x00 0x00 0x00 0x00 0x00 0x00 0xF8 0x3F]  double[0x00 0x00 0x00 0x00 0x00 0x00 0xF8 0x3F] , ldouble和double 相同

点评

了解了,ldouble和double一样了  详情 回复 发表于 2020-11-21 14:38
回复

使用道具 举报

15379#
发表于 2020-11-21 14:30:23 | 只看该作者
mdyblog 发表于 2020-11-21 14:12
之前也是 直接脚本搞的。  你写到这样,太厉害了!!!
太繁琐。 普通网友用就很麻烦。 所以内置下。  ...

资料上说
SecureBoot需要2.3.1以上的UEFI版本才支持。

点评

看来我这机器 EFI FW 有点低。  详情 回复 发表于 2020-11-21 14:35
回复

使用道具 举报

15380#
 楼主| 发表于 2020-11-21 14:35:36 | 只看该作者
红毛樱木 发表于 2020-11-21 14:30
资料上说
SecureBoot需要2.3.1以上的UEFI版本才支持。

看来我这机器 EFI FW 有点低。

点评

不知道怎么获取UEFI固件的版本信息,没翻到资料。  详情 回复 发表于 2020-11-21 14:39
回复

使用道具 举报

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

ENVI-ldouble & ...

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

使用道具 举报

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

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

使用道具 举报

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

使用道具 举报

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

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

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

使用道具 举报

15385#
发表于 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数据
再写回去
回复

使用道具 举报

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

使用道具 举报

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

效果:

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


回复

使用道具 举报

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

效果:

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

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

使用道具 举报

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

使用道具 举报

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

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

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-10 03:39

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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