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

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

   火... [复制链接]
发表于 2015-5-7 17:30:32 | 显示全部楼层
本帖最后由 hhh333 于 2015-5-7 17:34 编辑
mdyblog 发表于 2015-5-7 13:58
1: 用PE变量是为了写大型程序(>1000行),或作为函数库。
支持同名变量。
ENVI &&V=123


我用下面的代码测试了一下:
{
        ENVI  &&V=123
        {
                MESS  1、变量定义的下一级:V=%V%   &V=%&V%  &&V=%&&V%
        }
        MESS 2、变量定义的同一级:V=%V%   &V=%&V%  &&V=%&&V%
}
MESS  3、变量定义的上一级:V=%V%   &V=%&V%  &&V=%&&V%

结果如下:
1、变量定义的下一级:V=123   &V=123  &&V=
2、变量定义的同一级:V=123   &V=123  &&V=123
3、变量定义的上一级:V=%V%   &V=  &&V=

最后一个不好理解,&V和&&V为什么为空。而不是未定义状态?
还有就是如果将第一句改为ENVI  &V=123,结果相同。

点评

1:最后一个不好理解,&V和&&V为什么为空。而不是未定义状态? PE变量统一按照 “标准模式”来处理的, 1)未定义统一解释为空。 2)只是从前到后解释一遍,3)不会回头反复猜测什么样的组合才能才能匹配一个变量。  详情 回复 发表于 2015-5-7 18:58
回复

使用道具 举报

发表于 2015-5-7 17:52:25 | 显示全部楼层
mdyblog 发表于 2015-5-7 08:34
1:
SCRIPTINIT中的100
----------


嗯 感谢回复!
我就是直接在注册表里写的pecmd main #102

点评

可以的  详情 回复 发表于 2015-5-7 18:58
回复

使用道具 举报

 楼主| 发表于 2015-5-7 18:58:08 | 显示全部楼层
hhh333 发表于 2015-5-7 17:30
我用下面的代码测试了一下:
{
        ENVI  &&V=123

1:最后一个不好理解,&V和&&V为什么为空。而不是未定义状态?
PE变量统一按照 “标准模式”来处理的,  1)未定义统一解释为空。 2)只是从前到后解释一遍,3)不会回头反复猜测什么样的组合才能才能匹配一个变量。

2:
还有就是如果将第一句改为ENVI  &V=123,结果相同。

如果 前面(包含爸爸爷爷。。。)定义了PE变量V,ENVI  &V=123, 则不生成心的变量,只是设置其值。
否则, 先创建PE变量V,并初始值为123.
前面没有定义PE变量V时, 【ENVI  &V=123】 实际等于【ENVI  &&V=123】
这里前面没有定义PE变量V, 所以  【如果将第一句改为ENVI  &V=123,结果相同。】

点评

哦,我算基本弄清楚了  详情 回复 发表于 2015-5-7 20:57
回复

使用道具 举报

 楼主| 发表于 2015-5-7 18:58:25 | 显示全部楼层
小絔小小小 发表于 2015-5-7 17:52
嗯 感谢回复!
我就是直接在注册表里写的pecmd main #102

可以的
回复

使用道具 举报

发表于 2015-5-7 20:57:37 | 显示全部楼层
mdyblog 发表于 2015-5-7 18:58
1:最后一个不好理解,&V和&&V为什么为空。而不是未定义状态?
PE变量统一按照 “标准模式”来处理的,  ...

哦,我算基本弄清楚了
回复

使用道具 举报

发表于 2015-5-8 21:21:14 | 显示全部楼层
本帖最后由 chenall 于 2015-5-8 21:23 编辑

看了介绍好像 GETF 可以获取资源信息

比如PECMD.EXE里面的资源MENU里面的信息可以获取到吗?

获取到的是字符串数据还是?

点评

PUTF -dd -bs=10M D:\X.TXT,0,"%MyName%"#10021|#4 EXEC $D:\X.TXT ///原始数据。自己研究吧  详情 回复 发表于 2015-5-8 22:21
回复

使用道具 举报

 楼主| 发表于 2015-5-8 22:21:31 | 显示全部楼层
本帖最后由 mdyblog 于 2015-5-8 22:25 编辑
chenall 发表于 2015-5-8 21:21
看了介绍好像 GETF 可以获取资源信息

比如PECMD.EXE里面的资源MENU里面的信息可以获取到吗?

//(1)
PUTF -dd -bs=10M  D:\X.TXT,0,"%MyName%"#10021|#4
EXEC $D:\X.TXT


PUTF -dd -bs=10M  D:\X.TXT,0,""#10021|#4

//(2)
GETF  "%MyName%"#10021|#4,0#1M,&V
MESS. %&V%

或 GETF  ""#10021|#4,0#1M,&V
///原始数据。自己研究吧

点评

刚开始对 内部资源号和目录 的概态不是很理解,通过您的例子,现在明白了 谢谢。^_^  详情 回复 发表于 2015-5-9 09:40
回复

使用道具 举报

发表于 2015-5-9 02:55:12 | 显示全部楼层
本帖最后由 小絔小小小 于 2015-5-9 05:33 编辑

请教一下,当REGI要操作的键值名为
@C:\Windows\system32\notepad.exe,-470

类型为
REG_SZ

数据为
新建文本文档

这种键值名该如何处理呢

额外还想请教一下PECMD是否支持读入文档然后查询是否存在某字符串呢
实际应用是想要先用bcdedit生成一个启动列表文档,然后PECMD读取文档,查询其中拥有字符串EFI,既执行额外一些操作。

点评

1: 下载 PECMD2012.1.88.05.61-130810中英.多窗口线程稳定版_win32_64新设计.sfx.7z SET KNAME=@C:\Windows\system32\notepad.exe,-470 REGI $HKCU\SOFTWARE\PECMD\\%KNAME%=新建文本文档 要点: 1) 奇怪  详情 回复 发表于 2015-5-9 18:33
回复

使用道具 举报

发表于 2015-5-9 09:40:53 | 显示全部楼层
mdyblog 发表于 2015-5-8 22:21
//(1)
PUTF -dd -bs=10M  D:\X.TXT,0,"%MyName%"#10021|#4
EXEC $D:\X.TXT

刚开始对 内部资源号和目录 的概态不是很理解,通过您的例子,现在明白了

谢谢。^_^
回复

使用道具 举报

 楼主| 发表于 2015-5-9 15:38:04 | 显示全部楼层
527104427 发表于 2015-5-9 05:47
1.请教老大,不知   SHOW 0#6   和   SHOW 0:6   有何不同?
前者未能分配盘符,后者成功。

1.请教老大,不知   SHOW 0#6   和   SHOW 0:6   有何不同?
---
00036.png


2:
EJECT  弹出的是设备。 自然设备上的盘符都卸载了。


3:
3.假设 ENVI &&A=cdefgh ,有没有办法将 %&A% 的值转换为大写?
----------
泵点,26个SED
SET &A=0,a,A,%&A%
SET &A=0,b,B,%&A%
...
SET &A=0,z,Z,%&A%

点评

希望楼主能解答一下我1811楼的疑问  详情 回复 发表于 2015-5-9 17:48
回复

使用道具 举报

发表于 2015-5-9 17:48:34 | 显示全部楼层
mdyblog 发表于 2015-5-9 15:38
1.请教老大,不知   SHOW 0#6   和   SHOW 0:6   有何不同?
---


希望楼主能解答一下我9811楼的疑问
回复

使用道具 举报

 楼主| 发表于 2015-5-9 18:33:47 | 显示全部楼层
小絔小小小 发表于 2015-5-9 02:55
请教一下,当REGI要操作的键值名为

类型为

1:
下载 PECMD2012.1.88.05.61-130810中英.多窗口线程稳定版_win32_64新设计.sfx.7z

SET KNAME=@C:\Windows\system32\notepad.exe,-470
REGI $HKCU\SOFTWARE\PECMD\\%KNAME%=新建文本文档

要点:
1) 奇怪的字符(,=等), 用变量包装一下
2)REGI $,在前面指定类型
3)\\ 来分隔 后面的 【键值名】


2:
READ    %CurDir%\A.TXT,**,&&V
SED &&pos=?:1,EFI,,%&V%
   

你说的BCDEDIT,可以不用临时文件,直接到变量
EXEC*  &&V=*BCDEDIT  /?
MESS. %&V%

点评

刚刚去尝试了一下 REGI $HKCU\Software\Classes\Local Settings\MuiCache\1\AAF68885\\%bdvc%=关闭 BitLocker(&B)[/quote] 这样生成出来的键值名变成了  详情 回复 发表于 2015-5-14 09:17
感谢!刚开始我也尝试过先赋变量 原来是一些细节没处理好  详情 回复 发表于 2015-5-9 19:27
回复

使用道具 举报

 楼主| 发表于 2015-5-9 18:38:03 | 显示全部楼层
527104427 发表于 2015-5-9 05:47
1.请教老大,不知   SHOW 0#6   和   SHOW 0:6   有何不同?
前者未能分配盘符,后者成功。

3.假设 ENVI &&A=cdefgh ,有没有办法将 %&A% 的值转换为大写?
-----------
PECMD2012.1.88.05.61-130810中英.多窗口线程稳定版_win32_64新设计.sfx.7z

ENVI &&A=cdefgh中文ABC
SED &V1=0,.*,\u,%&A%
SED &V2=0,.*,\l,%&A%
MESS. 大写:【%&V1%】 小写:【%&V2%】
//大写:【CDEFGH中文ABC】 小写:【cdefgh中文abc】

\u  转换为大写
\l  转换为小写
回复

使用道具 举报

发表于 2015-5-9 19:27:28 | 显示全部楼层
mdyblog 发表于 2015-5-9 18:33
1:
下载 PECMD2012.1.88.05.61-130810中英.多窗口线程稳定版_win32_64新设计.sfx.7z

感谢!刚开始我也尝试过先赋变量 原来是一些细节没处理好
回复

使用道具 举报

发表于 2015-5-10 09:16:08 | 显示全部楼层
M大,有无办法检测exe文件是32位还是64位?

点评

在PE..后面有两个字节是平台 IMAGE_FILE_MACHINE_I386 0x014c x86 IMAGE_FILE_MACHINE_IA64 0x0200 Intel Itanium IMAGE_FILE_MACHINE_AMD64 0x8664 x64 标志是0x00004550--("PE.."),紧跟后面. [attachi  详情 回复 发表于 2015-5-10 17:37
回复

使用道具 举报

发表于 2015-5-10 15:48:08 | 显示全部楼层
Is it possible to automatically run subroutine (CALL DiskUpdate), when changed disks (the new drive USB-HDD/UDF connected)? // 是否有可能自动运行子程序(CALL DiskUpdate),当改变盘(新的驱动器的USB-HDD/ UDF连接)?

点评

TEAM ENVI^ ENVIMODE=1| ENVI^ FORCELOCAL=1 SET &WM_DEVICECHANGE=0x0219 SET &DBT_DEVICEREMOVECOMPLETE=0x8004 //Device has been removed. SET &DBT_DEVICEARRIVAL=0x8000 //A device has been inserted a  详情 回复 发表于 2015-5-10 17:58
回复

使用道具 举报

 楼主| 发表于 2015-5-10 17:37:27 | 显示全部楼层
本帖最后由 mdyblog 于 2015-5-10 17:38 编辑
ling3882688 发表于 2015-5-10 09:16
M大,有无办法检测exe文件是32位还是64位?


在PE..后面有两个字节是平台
IMAGE_FILE_MACHINE_I386 0x014c  x86
IMAGE_FILE_MACHINE_IA64 0x0200  Intel Itanium
IMAGE_FILE_MACHINE_AMD64 0x8664 x64

标志是0x00004550--("PE.."),紧跟后面.
00036.png


这个更详细:
Ibiamm.jpg

点评

谢M大。  详情 回复 发表于 2015-5-11 10:19
回复

使用道具 举报

 楼主| 发表于 2015-5-10 17:58:21 | 显示全部楼层
weconty 发表于 2015-5-10 15:48
Is it possible to automatically run subroutine (CALL DiskUpdate), when changed disks (the new drive  ...

TEAM ENVI^ ENVIMODE=1| ENVI^ FORCELOCAL=1
SET &WM_DEVICECHANGE=0x0219
SET &DBT_DEVICEREMOVECOMPLETE=0x8004   //Device has been removed.
SET &DBT_DEVICEARRIVAL=0x8000  //A device has been inserted and is now available.
SET &DBT_CONFIGCHANGED=0x0018  //Current configuration has changed.


WIN1

_SUB WIN1,W287H254,盘符监视,
    ENVI @this.Visable=1  //不显示
    ENVI @this.MSG=%WM_DEVICECHANGE%::&&wp,&&lp, OnDriveChange %&wp% %&lp%
_END

_SUB OnDriveChange  // %&wp%  %&lp%
    ///在这里绣花了。。。自己绣吧
    IFEX $%&wp%=%&DBT_DEVICEREMOVECOMPLETE%,   //Device has been removed.
    {*
       THREAD+  MESS Device has been removed.
       EXIT _SUB
    }
    IFEX $%&wp%=%&DBT_DEVICEARRIVAL%,   //A device has been inserted and is now available.
    {*
       THREAD+  MESS A device has been inserted and is now available.
       EXIT _SUB
    }
    IFEX $%&wp%=%&DBT_CONFIGCHANGED%,   //Current configuration has changed.
    {*
       THREAD+  MESS Current configuration has changed.
       EXIT _SUB
    }
_END
回复

使用道具 举报

发表于 2015-5-11 10:19:48 | 显示全部楼层
mdyblog 发表于 2015-5-10 17:37
在PE..后面有两个字节是平台
IMAGE_FILE_MACHINE_I386 0x014c  x86
IMAGE_FILE_MACHINE_IA64 0x0200 ...

谢M大。
回复

使用道具 举报

 楼主| 发表于 2015-5-14 09:13:57 | 显示全部楼层
本帖最后由 mdyblog 于 2015-5-14 09:16 编辑
527104427 发表于 2015-5-14 05:20
请教老大,下面的代码,
1.当切换页面456和789的时候,怎么才能重新设置L7和L8的内容?
2.点击确定以后 ...


关于PAGE的操作,有个示例,你看看。
补充说明中.DOC中也有详细介绍。

示例:TABL在TABS中查询3.WCS
回复

使用道具 举报

发表于 2015-5-14 09:17:26 | 显示全部楼层
本帖最后由 小絔小小小 于 2015-5-14 09:23 编辑
mdyblog 发表于 2015-5-9 18:33
1:
下载 PECMD2012.1.88.05.61-130810中英.多窗口线程稳定版_win32_64新设计.sfx.7z


关于9816楼的问题 刚刚去尝试了一下
ENVI bdvc=@%Windir%\system32\fvewiz.dll,-949
REGI $HKCU\Software\Classes\Local Settings\MuiCache\1\AAF68885\\%bdvc%=关闭 BitLocker(&B)

这样生成出来的键值名变成了
\@x:\windows\system32\fvewiz.dll,-949

点评

你是用的旧版PECMD。 新版就不会这样。  详情 回复 发表于 2015-5-14 09:47
回复

使用道具 举报

 楼主| 发表于 2015-5-14 09:46:19 | 显示全部楼层
本帖最后由 mdyblog 于 2015-5-14 10:17 编辑
527104427 发表于 2015-5-14 05:20
请教老大,下面的代码,
1.当切换页面456和789的时候,怎么才能重新设置L7和L8的内容?
2.点击确定以后 ...


改好了。 设置和查询子界面示例.wcs.zip (673 Bytes, 下载次数: 3)
  1. ENVI^ EnviMode=1
  2. ENVI &&WM_LBUTTONDOWN=0x0201
  3. CALL @Page0

  4. _SUB Page0,W543H256,123,,%MyName%,
  5.         SET  &Page1.L7=  //上传的数据
  6.         SET  &Page2.L8=
  7.         TABS &&T1,L19T17W500H157,Page1::456;Page2::789,
  8.         ENVI @&&T1.MSG=%&WM_LBUTTONDOWN%: On_T1
  9.         ITEM ,L361T183W60H25,查询,START,
  10.         ITEM ,L436T183W60H25,取消,KILL @,
  11. _END

  12. _SUB Page1,W543H174,
  13.        LIST &&L7,L410T55W46H23,1|2|3|4|5,SET Page1.L7=%&L7%,1,
  14.        SET Page1.L7=%&L7%
  15.        ENVI @this.MSG=#1: SET Page1.L7=%&L7%  //上传数据
  16. _END

  17. _SUB Page2,W543H182,
  18.         LIST &&L8,L410T55W46H23,a|b|c|d|e,SET Page2.L8=%&L8%,a,
  19.         SET Page2.L8=%&L8%
  20.         ENVI @this.MSG=#1: SET Page2.L8=%&L8%  //上传数据
  21. _END

  22. _SUB START
  23.         ENVI @Page1.SENDMSG=#1  //上传数据
  24.         ENVI @Page2.SENDMSG=#1  //上传数据
  25.         MESS 【%&Page1.L7%】-【%&Page2.L8%】
  26. _END

  27. _SUB On_T1
  28.         MESS -%&T1.Select%-
  29.         FIND $%&T1.Select%=1,
  30.         {
  31.                 ENVI @Page1:&&L7.VAL=5|6|7|8|9
  32.                 ENVI @Page1:&&L7=:5
  33.         }!  
  34.         {
  35.                 ENVI @Page2:&&L8.VAL=f|g|h|i|j
  36.                 ENVI @Page2:&&L8=:f
  37.         }
  38. _END
复制代码


测试正确。
回复

使用道具 举报

 楼主| 发表于 2015-5-14 09:47:07 | 显示全部楼层
小絔小小小 发表于 2015-5-14 09:17
关于9816楼的问题 刚刚去尝试了一下

这样生成出来的键值名变成了


你是用的旧版PECMD。 最最最最最最最最最最最最最最最最最最新版就不会这样。

点评

谢谢提醒 已经成功了 上次测试用的88.05.60 最新是61 本以为差距只是一个小版本不会有大碍呢  详情 回复 发表于 2015-5-14 10:54
回复

使用道具 举报

发表于 2015-5-14 10:54:06 | 显示全部楼层
mdyblog 发表于 2015-5-14 09:47
你是用的旧版PECMD。 最最最最最最最最最最最最最最最最最最新版就不会这样。

谢谢提醒 已经成功了
上次测试用的88.05.60
最新是61
本以为差距只是一个小版本不会有大碍呢
回复

使用道具 举报

 楼主| 发表于 2015-5-14 11:12:51 | 显示全部楼层
本帖最后由 mdyblog 于 2015-5-14 11:23 编辑
527104427 发表于 2015-5-14 10:49
多谢老大,明白了。

其实这样挺费事的,不如直接将 LIST &&L7  的 && 去掉算了,不用再设置新的变量。


那样是环境变量了。而且不支持同名控件。
作为一个小程序是没问题的。
回复

使用道具 举报

 楼主| 发表于 2015-5-14 11:17:30 | 显示全部楼层
527104427 发表于 2015-5-14 10:49
多谢老大,明白了。

其实这样挺费事的,不如直接将 LIST &&L7  的 && 去掉算了,不用再设置新的变量。


新版PECMD简化了下(兼容4.0)。 不需要消息来同步,而是自动同步。
qqq.7z (524.03 KB, 下载次数: 6)
  1. ENVI^ EnviMode=1
  2. ENVI &&WM_LBUTTONDOWN=0x0201
  3. CALL @Page0

  4. _SUB Page0,W543H256,123,,%MyName%,
  5.         SET  &Page1.L7=  //上传的数据
  6.         SET  &Page2.L8=
  7.         TABS &&T1,L19T17W500H157,Page1::456;Page2::789,
  8.         ENVI @&&T1.MSG=%&WM_LBUTTONDOWN%: On_T1
  9.         ITEM ,L361T183W60H25,查询,START,
  10.         ITEM ,L436T183W60H25,取消,KILL @,
  11. _END

  12. _SUB Page1,W543H174,
  13.        LIST &&L7,L410T55W46H23,1|2|3|4|5,SET Page1.L7=%&L7%,1,
  14.        SET Page1.L7=%&L7%
  15. _END

  16. _SUB Page2,W543H182,
  17.         LIST &&L8,L410T55W46H23,a|b|c|d|e,SET Page2.L8=%&L8%,a,
  18.         SET Page2.L8=%&L8%
  19. _END

  20. _SUB START
  21.         MESS 【%&Page1.L7%】-【%&Page2.L8%】
  22. _END

  23. _SUB On_T1
  24.         MESS -%&T1.Select%-
  25.         FIND $%&T1.Select%=1,
  26.         {
  27.                 ENVI @Page1:&&L7.VAL=5|6|7|8|9
  28.                 ENVI @Page1:&&L7=:5
  29.         }!  
  30.         {
  31.                 ENVI @Page2:&&L8.VAL=f|g|h|i|j
  32.                 ENVI @Page2:&&L8=:f
  33.         }
  34. _END
复制代码
回复

使用道具 举报

 楼主| 发表于 2015-5-14 12:06:18 | 显示全部楼层
本帖最后由 mdyblog 于 2015-5-14 13:11 编辑


进一步简化了。
LIST 控件就用窗口的变量&L7  &L8,方便访问。
控件名改为#&开头


所有控件都可以这样上移数据

qqq2.7z (523.83 KB, 下载次数: 2)
这就和原来差不多了

  1. ENVI^ EnviMode=1
  2. ENVI &&WM_LBUTTONDOWN=0x0201
  3. CALL @Page0

  4. _SUB Page0,W543H256,123,,%MyName%,
  5.         TEAM SET  &L7=| SET  &L8=  //预定义控件数据名
  6.         TABS &&T1,L19T17W500H157,Page1::456;Page2::789,
  7.         ENVI @&&T1.MSG=%&WM_LBUTTONDOWN%: On_T1
  8.         ITEM ,L361T183W60H25,查询,START,
  9.         ITEM ,L436T183W60H25,取消,KILL @,
  10. _END

  11. _SUB Page1,W543H174,
  12.        LIST #&L7,L410T55W46H23,1|2|3|4|5,,1,
  13. _END

  14. _SUB Page2,W543H182,
  15.         LIST #&L8,L410T55W46H23,a|b|c|d|e,,a,
  16. _END

  17. _SUB START
  18.         MESS -%&L7%-%&L8%-
  19. _END

  20. _SUB On_T1
  21.         MESS -%&T1.Select%-
  22.         FIND $%&T1.Select%=1,
  23.         {
  24.                 ENVI @Page1:#&L7.VAL=5|6|7|8|9
  25.                 ENVI @Page1:#&L7=:5
  26.         }!  
  27.         {
  28.                 ENVI @Page2:#&L8.VAL=f|g|h|i|j
  29.                 ENVI @Page2:#&L8=:f
  30.         }
  31. _END
复制代码


测试通过。
回复

使用道具 举报

 楼主| 发表于 2015-5-14 13:08:00 | 显示全部楼层
本帖最后由 mdyblog 于 2015-5-14 13:36 编辑
527104427 发表于 2015-5-14 12:58
这个可以,网盘没有看到新版?


刚传完。

一个控件有好多个变量。
如果需要提前,提前定义就好了。
如:
SET  &L7=
SET  &L7.Enable=1
SET  %Check1.Check=0

注意:如果没有主动定义, 这样和环境变量一样有风险。

如果没有主动定义L7.Enable, 而再上级定义了L7.Enable。 那么控件会直接修改他。
如果 谁也没定义,那么和没有#一样定一个局部PE变量。
回复

使用道具 举报

 楼主| 发表于 2015-5-14 15:00:02 | 显示全部楼层
本帖最后由 mdyblog 于 2015-5-14 15:07 编辑

这几天研究易经, 好像研究出个和“光速不变假设”类似的 “盘古速度不变定理”,
就是没想明白盘古速度怎么勾搭上光速?脑袋都敲破了。
谁能给我提示啊?!
回复

使用道具 举报

 楼主| 发表于 2015-5-14 15:04:48 | 显示全部楼层
527104427 发表于 2015-5-14 14:41
老大帮忙看看这个,好像不行

你这也太长了吧?
都不知道看啥?!

你把关键的问题提出来,写个小的测试代码吧?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-13 00:41

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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