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

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

   火... [复制链接]
 楼主| 发表于 2015-5-14 16:09:02 | 显示全部楼层
527104427 发表于 2015-5-14 16:05
我原先那一小段代码就能成功,做大了就不行了

那你的指出是那行的代码?总不能 每一行都研究吧。
回复

使用道具 举报

 楼主| 发表于 2015-5-14 16:21:23 | 显示全部楼层
527104427 发表于 2015-5-14 16:05
我原先那一小段代码就能成功,做大了就不行了

就是之前改的那个小程序啊。
哦,看了下,就差那些#&的变量没有初始化。
开始或母窗口开始初始化就好了:
TEAM SET &L5=| SET &L6=| SET &E8=|  SET &E4=| SET &L7=| SET &LA=| SET &LB=|  SET &E5=|  SET &E6=| SET &L8=| SET &LC=| SET &L9=| SET &E7=

测试成功。
ImDisk_GUI2.zip (2.95 KB, 下载次数: 7)


有空在研究一种更简单的方法。
回复

使用道具 举报

 楼主| 发表于 2015-5-14 18:12:27 | 显示全部楼层
本帖最后由 mdyblog 于 2015-5-14 18:14 编辑
527104427 发表于 2015-5-14 16:13
就是点一下确定,不能正常创建内存盘。

控件的变量没有传过来


有简化了下, 这次直接提升子界面PE变量的级别,提到母窗口一级。就简单多了。 不需要初始化变量了。也不需要#&。
只需要在子界面名称前面加上适当个数的-即可。


ImDisk_GUI3.7z (526.25 KB, 下载次数: 26)
设置查询子界面4种方法.7z (854 Bytes, 下载次数: 12)
测试成功。
回复

使用道具 举报

发表于 2015-5-15 13:04:58 | 显示全部楼层
M大,PART命令恢复删除的主分区可以,如果是逻辑分区怎么恢复?
PART  -up -super -gpt -cmp 0#1

点评

1) 你用-gpt. GPT是没有逻辑分区,所有的分区都是一样。 2)MBR才有逻辑分区。 等按顺序恢复,不能跳前面的逻辑分区先恢复后面的逻辑分区。 1)恢复扩展分区。和主分区方法一样,就类型为5或0x0F  详情 回复 发表于 2015-5-15 14:50
回复

使用道具 举报

 楼主| 发表于 2015-5-15 14:50:10 | 显示全部楼层
本帖最后由 mdyblog 于 2015-5-15 14:56 编辑
ling3882688 发表于 2015-5-15 13:04
M大,PART命令恢复删除的主分区可以,如果是逻辑分区怎么恢复?
PART  -up -super -gpt -cmp 0#1


1) 你用-gpt. GPT是没有逻辑分区,所有的分区都是一样。
2)MBR才有逻辑分区。
    等按顺序恢复,不能跳前面的逻辑分区先恢复后面的逻辑分区。
    1)恢复扩展分区。和主分区方法一样,就类型为5或0x0F
        PART -super -force -mbr -clear  -up -hup      1#2  0x0F 1G 1G    // 创建扩展分区。
    2)恢复第1个逻辑分区,分区号自动生长,用+L代替。
        PART  -super -force -mbr -clear  -up -hup    1#+L   0x7  +32256  57544704  // 扩展分区最后创建一逻辑分区  
+32256表示相对当前空闲起始的偏移,>=512。一般是固定的63s。恢复的话,要通过分区表计算这个偏移。
是不是 不用+就是绝对位置,忘了。肯定有不用+的用法。
    3)恢复第2个逻辑分区,分区号自动生长,用+L代替。
        PART  -super -force -mbr -clear  -up -hup    1#+L   0x6  +32256  57544704
    4)恢复第3个逻辑分区,分区号自动生长,用+L代替。.。。。。

点评

谢M大。  详情 回复 发表于 2015-5-15 15:07
回复

使用道具 举报

发表于 2015-5-15 15:07:32 | 显示全部楼层
本帖最后由 ling3882688 于 2015-5-15 15:10 编辑
mdyblog 发表于 2015-5-15 14:50
1) 你用-gpt. GPT是没有逻辑分区,所有的分区都是一样。
2)MBR才有逻辑分区。
    等按顺序恢复, ...


谢M大。因为逻辑分区是建立在扩展分区上的,所以我需要计算扩展分区大小,先建扩展分区然后再建逻辑分区对吧。
我试下看看。
回复

使用道具 举报

发表于 2015-5-16 14:39:11 | 显示全部楼层
M大帮忙看看,这个分区是怎么回事?
1.jpg

点评

-4表示 4#主分区条目空闲着。 -N表示 N#主分区条目空闲着。  详情 回复 发表于 2015-5-16 20:02
回复

使用道具 举报

 楼主| 发表于 2015-5-16 20:00:46 | 显示全部楼层
527104427 发表于 2015-5-16 10:20
用下面的代码,拔了U盘,成功MESS 2,然后重新插上,MESS 2失败
把窗口名字前的 * 去掉就正常了,不知道 ...


你说哪个*?  你也用用颜色突出一下啊? 这加红色的注释对应地标注该处问题。
回复

使用道具 举报

 楼主| 发表于 2015-5-16 20:02:54 | 显示全部楼层
ling3882688 发表于 2015-5-16 14:39
M大帮忙看看,这个分区是怎么回事?

-4表示 4#主分区条目空闲着。
-N表示 N#主分区条目空闲着。
回复

使用道具 举报

 楼主| 发表于 2015-5-16 20:26:32 | 显示全部楼层
527104427 发表于 2015-5-16 14:36
再请教一个问题:

假如想搜索磁盘前面512字节中有无 USB 字样,下面的代码不行,请老大指点正确的用法: ...

那个主要是大文件查找的,优势是对齐查找。
你这种自由查找,又是小数据,还是先读到变量,再用SED查找吧。
回复

使用道具 举报

发表于 2015-5-16 21:04:08 | 显示全部楼层
527104427 发表于 2015-5-16 14:36
再请教一个问题:

假如想搜索磁盘前面512字节中有无 USB 字样,下面的代码不行,请老大指点正确的用法: ...

其实我对这个命令真是很迷糊,特别是块大小的选项,设1还好,其本正常,其它数值或不设都找不到。
比如你要查找USB字样可用的代码

  1. code *,USB,**-ANSI,&&usb
  2. GETF -find \\.\PhysicalDrive3,0#0x1ff#0#0#1#0,&&v,*&&usb
复制代码


用 sed的话好像只能转换成0x55 0x53 0x42这样子的方式才能找得到,但是如果我想得到这个字符串在文件的位置用SED不太方便(二进制数据有0x00 0x00的)

点评

1就是自由查找。一字节为单位。没找到就后移1字节。 默认是512,就是扇区为单位。没找到就后移512字节。  详情 回复 发表于 2015-5-16 21:11
回复

使用道具 举报

 楼主| 发表于 2015-5-16 21:11:15 | 显示全部楼层
本帖最后由 mdyblog 于 2015-5-16 21:13 编辑
chenall 发表于 2015-5-16 21:04
其实我对这个命令真是很迷糊,特别是块大小的选项,设1还好,其本正常,其它数值或不设都找不到。
比如 ...


1就是自由查找。一字节为单位。没找到就后移1字节。
默认是512,就是扇区为单位。没找到就后移512字节。

厉害啊, 这个命令都整成功了。

这么复杂的命令,一般还是 看看实例代码(WCS)。

点评

sed只能查找文本文件是吗?我试了只能找文本文件正常。  详情 回复 发表于 2015-5-16 21:19
回复

使用道具 举报

发表于 2015-5-16 21:19:18 | 显示全部楼层
本帖最后由 chenall 于 2015-5-16 21:25 编辑
mdyblog 发表于 2015-5-16 21:11
1就是自由查找。一字节为单位。没找到就后移1字节。
默认是512,就是扇区为单位。没找到就后移512字节 ...


sed只能查找文本文件是吗?我试了只能找文本文件正常。

另外这个PECMD功能太强大了,很多东西都要看帮助介绍才能了解。^_^
回复

使用道具 举报

 楼主| 发表于 2015-5-16 22:15:32 | 显示全部楼层
527104427 发表于 2015-5-16 10:20
用下面的代码,拔了U盘,成功MESS 2,然后重新插上,MESS 2失败
把窗口名字前的 * 去掉就正常了,不知道 ...

1:
你这两个*, 那么这2级函数 直接 运行再窗口的堆栈上。
这样 定义的锁就不会释放。
在一个线程中LOCK没有意义。

应该在子线程中LOCK ABC吧。

2:
IFEX $[ '%&wp%'='%&DBT_DEVICEREMOVECOMPLETE%' | '%&wp%'='%&DBT_DEVICEARRIVAL%' | '%&wp%'='%&DBT_CONFIGCHANGED%' ]
单引号都去掉, 应该是数值比较。

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

_SUB WIN1,W287H254,盘符监视,
         ENVI @this.MSG=%WM_DEVICECHANGE%::&&wp,&&lp, OnDriveChange %&wp% %&lp%
_END

_SUB OnDriveChange *
         IFEX $[ %&wp%=%&DBT_DEVICEREMOVECOMPLETE% | %&wp%=%&DBT_DEVICEARRIVAL% | %&wp%=%&DBT_CONFIGCHANGED% ], ABC
_END

_SUB ABC *
         THREAD MESS 1 @A*5000
          LOCK --exist ABC,&&V
          IFEX $%&V%<>0,EXIT _SUB
          THREAD CALL MESS2
_END

_SUB  MESS2
         LOCK ABC
        MESS 2 @A*5000
         //WAIT 10000
_END

回复

使用道具 举报

发表于 2015-5-16 22:45:25 | 显示全部楼层
527104427 发表于 2015-5-16 22:04
不行哦,我有一个U盘是U+写入的,MBR有USB字样,下面代码全提示 -1,应该是找不到吧?

PART list disk ...

0#0x1ff#0#0#1#0
改成
0#0x1ff#3#0#1#0

限制目标长度为3个字节,再试试。
回复

使用道具 举报

 楼主| 发表于 2015-5-17 05:22:12 | 显示全部楼层
527104427 发表于 2015-5-16 23:10
有个疑问:
TEAM ENVI &&v1=| ENVI &&v2=A|
IFEX $[ %&v1%>0 | %&v2%>0 ], MESS OK

你这里v1 v2 都不是合法的数值,比较数值,则统一转换成0了。

不知道你想干什么。
1)
IFEX $[ %&v1%>0 | %&v2%>0 ], MESS YYY!  MESS NNNNN

------------
合法的数值,比较数值,则统一转换成0了
IFEX $[ 0>0 | 0>0 ], MESS YYY!  MESS NNNNN
MESS NNNNN

2)
IFEX $[ ‘%&v1%’>0 | ‘%&v2%’>0 ], MESS YYY!  MESS NNNNN
等价于:
FIND $[ %&v1%>0 | %&v2%>0 ], MESS YYY!  MESS NNNNN

------------
字符比较,逐个比较字符的UNICODE内码值大小,结尾符号为0x0.
字符0内码为0x30
字符A内码为0x41

IFEX $[ 0>0x30 | 0x41>0x30 ], MESS YYY!  MESS NNNNN
MESS YYY

回复

使用道具 举报

 楼主| 发表于 2015-5-17 05:27:25 | 显示全部楼层
527104427 发表于 2015-5-16 22:53
是哦,居然没想到要搜三个字符,晕了!!

谢谢,可以了


还有:
想搜索磁盘前面512字节。
那么0x1FF要改成0x200,否则最后一个字符丢了,只检测511个字节了。
回复

使用道具 举报

 楼主| 发表于 2015-5-17 06:13:46 | 显示全部楼层
本帖最后由 mdyblog 于 2015-5-17 06:16 编辑
527104427 发表于 2015-5-17 06:05
是这样的,假如变量&v的位数不确定,有可能是一位,有可能是两位,有可能是三位……不是凭空想象,是目前 ...

1:
问题是,你先要想清楚:空数值你打算怎么对待?是当作数值0来处理吗?还是比数值0还小,还是。。。?
想清楚了,才能依次此写代码?

2:
IFEX $[ %&v1%<A
这个不对,A不是合法数字,不能IFEX $。可以是:
IFEX $[ %&v1%<0xA //数值比较
FIND $[ %&v1%<A    //字符串比较
回复

使用道具 举报

 楼主| 发表于 2015-5-17 06:31:24 | 显示全部楼层
本帖最后由 mdyblog 于 2015-5-17 06:33 编辑
527104427 发表于 2015-5-17 06:20
那说一下我的意图吧,我是想判断一个变量是否为盘符,不是盘符就MESS ERR,丢弃了。麻烦老大看看这个怎么 ...


三个都有可能是空的 怎么对待? OK还是ERR?
回复

使用道具 举报

 楼主| 发表于 2015-5-17 06:40:02 | 显示全部楼层
本帖最后由 mdyblog 于 2015-5-17 06:45 编辑



那是字符串比较:
FIND  $[ %&v1%>=A & %&v1%<=Z  & %&v2%=: & '%&v3%'='' ], MESS OK!  MESS ERR

-------
测试
TEAM ENVI &v1=b| ENVI &v2=:| ENVI &v3=
FIND  $[ %&v1%>=A & %&v1%<=Z  & %&v2%=: & '%&v3%'='' ], MESS OK!  MESS ERR
TEAM ENVI &v1=B| ENVI &v2=:| ENVI &v3=
FIND  $[ %&v1%>=A & %&v1%<=Z  & %&v2%=: & '%&v3%'='' ], MESS OK!  MESS ERR

TEAM ENVI &v1=| ENVI &v2=| ENVI &v3=
FIND  $[ %&v1%>=A & %&v1%<=Z  & %&v2%=: & '%&v3%'='' ], MESS OK!  MESS ERR
TEAM ENVI &v1=_| ENVI &v2=:| ENVI &v3=
FIND  $[ %&v1%>=A & %&v1%<=Z  & %&v2%=: & '%&v3%'='' ], MESS OK!  MESS ERR
TEAM ENVI &v1=B| ENVI &v2=:| ENVI &v3=_
FIND  $[ %&v1%>=A & %&v1%<=Z  & %&v2%=: & '%&v3%'='' ], MESS OK!  MESS ERR
回复

使用道具 举报

发表于 2015-5-17 18:57:05 | 显示全部楼层
LINK命令能够创建快捷方式,如果有一个.LNK文件,能不能读取其中的命令?

点评

HELP [attachimg]216644[/attachimg]  详情 回复 发表于 2015-5-17 19:50
回复

使用道具 举报

 楼主| 发表于 2015-5-17 19:50:58 | 显示全部楼层
sp_star 发表于 2015-5-17 18:57
LINK命令能够创建快捷方式,如果有一个.LNK文件,能不能读取其中的命令?

HELP
00036.png

点评

呵呵,多谢!眼花了.....  详情 回复 发表于 2015-5-17 20:17
回复

使用道具 举报

发表于 2015-5-17 20:17:12 | 显示全部楼层

呵呵,多谢!眼花了.....
回复

使用道具 举报

 楼主| 发表于 2015-5-17 20:33:58 | 显示全部楼层
527104427 发表于 2015-5-17 08:57
明白了,以前搞明白过,很久没用了,又搞混了

IFEX $   会把空字符和其它字符当成0

1.此时A页的 &La、&Ca.Check 已经变成B页的值了,有什么方法让A页的控件不受B页的影响?
--------------
其实空间受收影响,只是对外显示的变量显示问题。
你用的“方法1:子界面升级”的方法,此时 两个自界面的 对外显示的变量 手上提到母窗口,因而在一起了, 因而变成一个了,混在一起了。
此种 方法 是为了方便, 前提是不同 子界面 控件名称不同。所以:
1) 方法1: 改名字,不同 子界面 控件名称不同
2)  不要 “方法1:子界面升级”, 用 “方法3:自动上传法”


2.ITEM -def &&I1 捕捉不到焦点,按回车没反应。
1)-def 是初始初始状态,  但是用户点鼠标还是可以转移焦点的。
2)你这里用来LIST,LIST获得焦点的话,不会轻易,会死抓着不放。

这么复杂,别提那么多有要求吧。
回复

使用道具 举报

发表于 2015-5-18 10:20:57 | 显示全部楼层
本帖最后由 chenall 于 2015-5-18 10:22 编辑

之前用88.05.57版本,现在换成88.05.61最新版本的

发现一个关于控件的事件处理的变化。

比如LIST控件,之前的版本,用ENVI修改或增加列表不会触发事件,新的版本会触发事件。
也就是说如果我在LIST控件上用ENVI添加了10个选项,它就会触发10次控件事件。

这是最新版本的功能还是?


点评

是的,新版61加的, LOG中有记载。 兼容PECMD4.0, 4.0也是也是这么做的。 同时,可以实现“自动上传子界面控件的值”。 示例\设置查询子界面4种方法.wcs  详情 回复 发表于 2015-5-18 11:20
回复

使用道具 举报

发表于 2015-5-18 11:07:57 | 显示全部楼层

  1. PART LIST DISK,DISKX
  2. FORX * %DISKX%,HD,TEAM FORM V,BUSNAME=\\.\PHYSICALDRIVE%HD%|FIND $%BUSNAME%=7,CALL A1
  3. //TEAM  SHOW *F:0|
  4. SHOW *U:0,,,U
  5. //SHOW U:1,U





  6. _SUB A1
  7.      
  8.         PART -ADMIN LIST PART %HD%,PART_INFO        
  9.         FORX * %PART_INFO%,PR,
  10. {
  11.         PART -ADMIN LIST PART %HD%#%PR%,PARTI
  12.         MSTR LETTER=<8>%PARTI%
  13.         FIND $%LETTER%=,!SHOW - %HD%#%PR%
  14.       //  FIND $%LETTER%=,!SUBJ %LETTER%
  15. }
  16.         
  17. _END
复制代码
M大看看,在Windows 7X64下,用1201.88.5.61版PECMD运行上面的代码,只能卸载USB盘符,卸载后的SHOW *U:0,,,U或SHOW U:1,U似乎不起作用,未能重新分配盘符为“U:”





点评

SHOW - %HD%#%PR% --- 应该是 SHOW - %HD%:%PR% 因为 你这里%PR%为逻辑号,不是物理号。 还可直接: SUBJ %LETTER%  详情 回复 发表于 2015-5-18 11:48
XP下测试: SHOW *U:0,,,U 有效。 你试试: SHOW *U:-1,,,U  详情 回复 发表于 2015-5-18 11:26
回复

使用道具 举报

 楼主| 发表于 2015-5-18 11:20:17 | 显示全部楼层
chenall 发表于 2015-5-18 10:20
之前用88.05.57版本,现在换成88.05.61最新版本的

发现一个关于控件的事件处理的变化。

是的,新版61加的, LOG中有记载。
兼容PECMD4.0, 4.0也是也是这么做的。

同时,可以实现“自动上传子界面控件的值”。 示例\设置查询子界面4种方法.wcs
回复

使用道具 举报

发表于 2015-5-18 11:24:16 | 显示全部楼层
请教一个问题,有什么办法可以让PECMD导出自己的资源文件吗?
比如将自己的#102资源写出为一个文件,将自己的#103资源内容传递到MESS来显示。

点评

可以 没加密的可以自动解压缩,可以不解压。 GETF# ""#103|SCRIPT,0#10M,&V //自动CMPS解压 CODE **-GBK,&V,**-UNI,&V2 //编码转换, GBK-->UNICODE MESS. %&V2% GETF# ""#.103|SCRIPT,0#10M,&V  详情 回复 发表于 2015-5-18 11:35
回复

使用道具 举报

 楼主| 发表于 2015-5-18 11:26:49 | 显示全部楼层
chiannet 发表于 2015-5-18 11:07
M大看看,在Windows 7X64下,用1201.88.5.61版PECMD运行上面的代码,只能卸载USB盘符,卸载后的SHOW *U:0,, ...

XP下测试:
SHOW *U:0,,,U
有效。

你试试:
SHOW *U:-1,,,U

点评

刚用了SHOW *U:-1,,,U 还是没出来  详情 回复 发表于 2015-5-18 11:29
回复

使用道具 举报

发表于 2015-5-18 11:29:58 | 显示全部楼层
mdyblog 发表于 2015-5-18 11:26
XP下测试:
SHOW *U:0,,,U
有效。

刚用了SHOW *U:-1,,,U
还是没出来
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-12 23:48

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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