无忧启动论坛

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

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

    [复制链接]
15211#
发表于 2020-4-4 15:48:38 | 只看该作者
回复

使用道具 举报

15212#
发表于 2020-4-4 22:14:09 | 只看该作者
M大,
请教下挂载VHD的MOUN-vhd是调用AttachVirtualDisk这个API吗?
如果是的话,加一个挂载ISO的功能吧。
https://msdn.microsoft.com/en-us/library/windows/desktop/dd323692(v=vs.85).aspx

win8及以上系统可以用来直接挂ISO。
回复

使用道具 举报

15213#
发表于 2020-4-5 00:05:03 | 只看该作者
SET#%  &si=(4*7) 0 0 0  *(4*6) 0  //SCROLLINFO  4*7 个字节

示例代码中看到这样一段。
请教,这种创建结构体的具体用法和格式及各部分含义。

点评

SET#% #为子杰模式 %为10进制 $为16进制 (4*7) 就是28 (4*7) 就是24 SET#% &si=28 0 0 0 *24 0 //SCROLLINFO 4*7 个字节 开始4个字节依次为 28 0 0 0 *24 0: 接着 24 个 0  详情 回复 发表于 2020-4-5 16:07
回复

使用道具 举报

15214#
发表于 2020-4-5 11:23:47 | 只看该作者
  1. ENVI^ ENVIMODE=1
  2. SET#% &a=*4 0
  3. ENVI-addr ;&&Len=&&a
  4. MESS. <%&&Len%>
复制代码

单独查询长度查不了,非要和地址一起才可以。
  1. ENVI^ ENVIMODE=1
  2. SET#% &a=*4 0
  3. ENVI-addr &&addr;&&Len=&&a
  4. MESS. <%&&addr%><%&&Len%>
复制代码


点评

只有长度是可以的。 上面程序返回:  详情 回复 发表于 2020-4-5 16:14
回复

使用道具 举报

15215#
 楼主| 发表于 2020-4-5 16:07:47 | 只看该作者
本帖最后由 mdyblog 于 2020-4-5 16:16 编辑
红毛樱木 发表于 2020-4-5 00:05
SET#%  &si=(4*7) 0 0 0  *(4*6) 0  

示例代码中看到这样一段。

SET#%  
#为字节模式
%为10进制
$为16进制
(4*7) 就是28
(4*7) 就是24

SET#%  &si=28  0 0 0  *24   0
开始4个字节依次为 28  0 0 0
*24 0:
接着 24 个 0

*N 表示 后面数值 重复N次


回复

使用道具 举报

15216#
 楼主| 发表于 2020-4-5 16:14:44 | 只看该作者
红毛樱木 发表于 2020-4-5 11:23
单独查询长度查不了,非要和地址一起才可以。

只有长度是可以的。
上面程序返回:
<4>

点评

我实际使用,什么都没返回。要两个一起才可以。你试试  详情 回复 发表于 2020-4-5 17:17
回复

使用道具 举报

15217#
发表于 2020-4-5 17:17:50 | 只看该作者
mdyblog 发表于 2020-4-5 16:14
只有长度是可以的。
上面程序返回:

我实际使用,什么都没返回。要两个一起才可以。你试试

点评

直接用 SET-addr ENVI^ ENVIMODE=1 SET#% &a=*4 0 SET-addr ;&&Len=&a MESS. [attachimg]415399[/attachimg]  详情 回复 发表于 2020-4-5 19:40
回复

使用道具 举报

15218#
 楼主| 发表于 2020-4-5 19:40:10 | 只看该作者
本帖最后由 mdyblog 于 2020-4-5 19:47 编辑
红毛樱木 发表于 2020-4-5 17:17
我实际使用,什么都没返回。要两个一起才可以。你试试

直接用 SET-addr

ENVI^ ENVIMODE=1
SET#% &a=*4 0
SET-addr ;&&Len=&a
MESS. <%&&Len%>



如果用  ENVI-addr ;&&Len=&&a
前面要用  ENVI^ ForceLocal=1 切换到PE变量模式。


ENVI^ ForceLocal=1
ENVI^ ENVIMODE=1
SET#% &a=*4 0
ENVI-addr ;&&Len=&&a
MESS. <%&&Len%>

---------
同上

点评

[attachimg]415402[/attachimg] [attachimg]415403[/attachimg] 我是这个意思。  详情 回复 发表于 2020-4-5 20:23
回复

使用道具 举报

15219#
发表于 2020-4-5 20:23:19 | 只看该作者
mdyblog 发表于 2020-4-5 19:40
直接用 SET-addr

ENVI^ ENVIMODE=1
  1. ENVI^ ENVIMODE=1
  2. ENVI#% &a=*4 0
  3. ENVI-addr ;&&Len=&a
  4. MESS. <%&&Len%>
复制代码




  1. ENVI^ ENVIMODE=1
  2. ENVI#% &a=*4 0
  3. ENVI-addr &&add;&&Len=&a
  4. MESS. <%&&add%><%&&Len%>
复制代码




我是这个意思。

点评

PE变量 的内存操作, 直接用SET, 不要用 ENVI ENVI^ ENVIMODE=1 SET#% &a=*4 0 SET-addr ;&&Len=&a MESS.  详情 回复 发表于 2020-4-6 08:10
回复

使用道具 举报

15220#
 楼主| 发表于 2020-4-6 08:10:28 | 只看该作者

PE变量 的内存操作, 直接用SET, 不要用 ENVI

ENVI^ ENVIMODE=1
SET#% &a=*4 0
SET-addr ;&&Len=&a
MESS. <%&&Len%>

点评

老大,报告BUG: FIND --menu 变量名,窗口ID //查询窗口的MENU标识 FIND --menu#0 变量名,MENU标识 //查询MENU的子MENU标识 FIND --menu#序号  详情 回复 发表于 2020-4-8 13:02
这中间用-opt:无效,反而会造成挂载失败。 主要是碰到磁盘是4096扇区的时候要指定一下-S 4096,遇到这种情况测试无效了。  详情 回复 发表于 2020-4-6 14:47
HELP里,基本上都是ENVI来演示的。这样的话,好绕好晕。  详情 回复 发表于 2020-4-6 11:06
回复

使用道具 举报

15221#
发表于 2020-4-6 11:06:00 | 只看该作者
mdyblog 发表于 2020-4-6 08:10
PE变量 的内存操作, 直接用SET, 不要用 ENVI

ENVI^ ENVIMODE=1

HELP里,基本上都是ENVI来演示的。这样的话,好绕好晕。
回复

使用道具 举报

15222#
发表于 2020-4-6 14:47:21 | 只看该作者
本帖最后由 红毛樱木 于 2020-4-6 15:25 编辑
mdyblog 发表于 2020-4-6 08:10
PE变量 的内存操作, 直接用SET, 不要用 ENVI

ENVI^ ENVIMODE=1
  1. MOUN-udm -udmid:pt#2 -ret:&MounRet -opt: -S 512 \\.\PhysicalDrive6 Z:
复制代码


这中间用-opt:无效,反而会造成挂载失败。
主要是碰到磁盘是4096扇区的时候要指定一下-S 4096,遇到这种情况测试无效了。(现在的MOUN-udm -udmid:无法自动判断4096扇区磁盘,而用MOUN-udm -udm- -u+ -mall -mhide1 -mhide \\.\PhysicalDrive6 Z:可以)

点评

MOUN-udm -udmid:pt#2 -ret:&MounRet -opt: -S -opt: 512 \\.\PhysicalDrive6 Z: or MOUN-udm -udmid:pt#2 -ret:&MounRet -opts: "-S 512" \\.\PhysicalDrive6 Z:  详情 回复 发表于 2020-4-6 16:12
回复

使用道具 举报

15223#
 楼主| 发表于 2020-4-6 16:12:03 | 只看该作者
红毛樱木 发表于 2020-4-6 14:47
这中间用-opt:无效,反而会造成挂载失败。
主要是碰到磁盘是4096扇区的时候要指定一下-S 4096,遇到 ...

MOUN-udm -udmid:pt#2 -ret:&MounRet -opt: -S -opt: 512 \\.\PhysicalDrive6 Z:

or
MOUN-udm -udmid:pt#2 -ret:&MounRet -opts: "-S 512" \\.\PhysicalDrive6 Z:

点评

part -hextp -phy -fill list part 6#2,&&fixfenqu2 MSTR &&c,&&d=%&&fixfenqu2% RAMD ImDisk*&MounRet*%&&c%*%&&d%*0*\\.\PhysicalDrive6 -a -S 4096 -o hd -m Z: MESS. %&MounRet% 非要这种直接调用IMDISK  详情 回复 发表于 2020-4-6 16:49
MOUN-udm -udmid:pt#2 -ret:&MounRet -opt: -S -opt: 4096 \\.\PhysicalDrive6 Z: or MOUN-udm -udmid:pt#2 -ret:&MounRet -opts: "-S 4096" \\.\PhysicalDrive6 Z: 实测,还是没有按4096挂载,造成Z:不可读  详情 回复 发表于 2020-4-6 16:42
回复

使用道具 举报

15224#
发表于 2020-4-6 16:42:53 | 只看该作者
mdyblog 发表于 2020-4-6 16:12
MOUN-udm -udmid:pt#2 -ret:&MounRet -opt: -S -opt: 512 \\.\PhysicalDrive6 Z:

or

MOUN-udm -udmid:pt#2 -ret:&MounRet -opt: -S -opt: 4096 \\.\PhysicalDrive6 Z:

or
MOUN-udm -udmid:pt#2 -ret:&MounRet -opts: "-S 4096" \\.\PhysicalDrive6 Z:

实测,还是没有按4096挂载,造成Z:不可读。
你用那个4K优盘测试下看看。
回复

使用道具 举报

15225#
发表于 2020-4-6 16:49:03 | 只看该作者
本帖最后由 红毛樱木 于 2020-4-6 20:41 编辑
mdyblog 发表于 2020-4-6 16:12
MOUN-udm -udmid:pt#2 -ret:&MounRet -opt: -S -opt: 512 \\.\PhysicalDrive6 Z:

or

part -hextp -phy -fill list part 6#2,&&fixfenqu2
MSTR &&c,&&d=<4><5>%&&fixfenqu2%
RAMD ImDisk*&MounRet*%&&c%*%&&d%*0*\\.\PhysicalDrive6 -a -S 4096 -o hd -m Z:
MESS. %&MounRet%


非要这种直接调用IMDISK的方式才可以。但是这样就不能用MOUN中的别的-CheckFile等参数,不方便,老大看下。


-------------------------------------------------------------------------------------
总结一下:
磁盘号为6的磁盘是4K扇区磁盘,R模式的,两个分区。Win7下测试。
方法一:(-S 4096参数实际无效,还是按照512来处理的,具体现象是Z:无法访问)
MOUN-udm -udmid:pt#2 -ret:&MounRet -opt: -S -opt: 4096 \\.\PhysicalDrive6 Z:
or
MOUN-udm -udmid:pt#2 -ret:&MounRet -opts: "-S 4096" \\.\PhysicalDrive6 Z:


方法二:(可以正常访问Z:)
MOUN-udm -udm- -u+ -mall -mhide1 -mhide \\.\PhysicalDrive6 Z:



方法三:(可以正常访问Z:)
part -hextp -phy -fill list part 6#2,&&fixfenqu2
MSTR &&c,&&d=<4><5>%&&fixfenqu2%
RAMD ImDisk*&MounRet*%&&c%*%&&d%*0*\\.\PhysicalDrive6 -a -S 4096 -o hd -m Z:

--------------------------------------------------------------------------------------
总之应该就是-udmid中使用的-opt(s)传递参数无效。

点评

PECMD-PT4K.ZIP: https://www.lanzous.com/ib2jjef -S 4096 可以不用指定。 可自动识别 4K磁盘。  详情 回复 发表于 2020-4-7 07:08
回复

使用道具 举报

15226#
 楼主| 发表于 2020-4-7 07:08:41 | 只看该作者
红毛樱木 发表于 2020-4-6 16:49
part -hextp -phy -fill list part 6#2,&&fixfenqu2
MSTR &&c,&&d=%&&fixfenqu2%
RAMD ImDisk*&MounRet ...

PECMD-PT4K.ZIP:  https://www.lanzous.com/ib2jjef

-S 4096 可以不用指定。 可自动识别 4K磁盘。

点评

请教老大, ENVI ?&a=WinVer //0x600011DB1 能不能通过 ENVI? 或 ENVI-mkfixdummy 等命令将&a拆分成三段? 0x6 0x0001 0x1DB1  详情 回复 发表于 2020-4-7 17:18
测试通过。  详情 回复 发表于 2020-4-7 12:10
回复

使用道具 举报

15227#
发表于 2020-4-7 12:10:19 | 只看该作者
mdyblog 发表于 2020-4-7 07:08
PECMD-PT4K.ZIP:  https://www.lanzous.com/ib2jjef

-S 4096 可以不用指定。 可自动识别 4K磁盘。

测试通过。
回复

使用道具 举报

15228#
发表于 2020-4-7 17:18:08 | 只看该作者
mdyblog 发表于 2020-4-7 07:08
PECMD-PT4K.ZIP:  https://www.lanzous.com/ib2jjef

-S 4096 可以不用指定。 可自动识别 4K磁盘。


请教老大,
ENVI ?&a=WinVer   //0x600011DB1

能不能通过 ENVI? 或 ENVI-mkfixdummy 等命令将&a拆分成三段?
0x6    0x0001    0x1DB1


点评

实际好像没啥意义  详情 回复 发表于 2020-4-7 23:53
回复

使用道具 举报

15229#
发表于 2020-4-7 17:24:32 | 只看该作者
感谢分享
回复

使用道具 举报

15230#
发表于 2020-4-7 18:32:01 | 只看该作者
本帖最后由 红毛樱木 于 2020-4-7 18:45 编辑

搞错了
回复

使用道具 举报

15231#
发表于 2020-4-7 23:53:02 | 只看该作者
527104427 发表于 2020-4-7 17:18
请教老大,
ENVI ?&a=WinVer   //0x600011DB1
  1. ENVI ?&a=WinVer
  2. ENVI-make &b=&a@0;*(2*3)
  3. ENVI-make &c=&a@(0+(2*3));*(2*4)
  4. ENVI-make &d=&a@(0+(2*3)+(2*4));*(2*4)
  5. MESS. <%&a%><%&b%><%&c%><%&d%>
复制代码


实际好像没啥意义
回复

使用道具 举报

15232#
发表于 2020-4-8 13:02:34 | 只看该作者
mdyblog 发表于 2020-4-6 08:10
PE变量 的内存操作, 直接用SET, 不要用 ENVI

ENVI^ ENVIMODE=1

老大,报告BUG:

FIND --menu    变量名,窗口ID                              //查询窗口的MENU标识
FIND --menu#0  变量名,MENU标识                            //查询MENU的子MENU标识
FIND --menu#序号  变量名,MENU标识                         //查询指定序号子MENU信息 序号>=1



上面3条命令均无效。示例代码:

CALL @A
_SUB A,W435H184,新窗口1,
    ENVI &thisWid=%&__WinID%
    TIME &Timer1,0, CALL D
    ITEM &ITEM1,L178T87W120H30,右键菜单,TEAM ENVI @&Timer1=1| CALL @--popmenu B,
_END

_SUB B
    MENU MENU1,ABCD,
    MENU MENU2,EFGH,
    MENU -bar -sub C,EFGH
_END

_SUB C
    MENU MENU3,IJKL,
    MENU MENU4,MNOP,
_END

_SUB D
    FIND --forpid:%&__PID% --class:#32768 --wid* &E,
    IFEX $%&E%>0,
    {
        FIND --menu &F,%&E%
        FIND --menu#0 &G,%&F%
        FIND --menu#3 &H,%&F%
        MESS. MENU窗口ID:[%&E%]   MENU标识:[%&F%]   子MENU标识:[%&G%]   第3项子MENU信息:[%&H%]       //MENU窗口ID:[6097848]   MENU标识:[0]   子MENU标识:[0]   第3项子MENU信息:[0]
    }
_END










点评

这个是用来找 窗口 内置 的菜单的。 就是固定在窗口上的那种。 弹出菜单实际不属于窗口。  详情 回复 发表于 2020-4-13 09:41
回复

使用道具 举报

15233#
发表于 2020-4-8 13:09:37 | 只看该作者
谢谢 分享
回复

使用道具 举报

15234#
发表于 2020-4-9 18:04:40 | 只看该作者
新版PECMD由于监控了桌面壁纸,
在进入PE后,手动在一个图片上右键,设置为壁纸后,会被PECMD还原

点评

手动设置后,同步 修改下 PECMD桌面注册表项, 或WALL命令在执行一次。  详情 回复 发表于 2020-4-13 09:38
回复

使用道具 举报

15235#
发表于 2020-4-11 07:59:43 | 只看该作者
本帖最后由 sunsea 于 2020-4-11 08:04 编辑
lxl1638 发表于 2012-1-22 19:55
有意思,望继续完善。。。。。

这个大概是2.88左右版源码修改的,也希望加入最新版的功能。

话说这个帖子的源码还有吗……时空论坛挂了……仅做研究之用不做其他任何用途……感谢……
回复

使用道具 举报

15236#
 楼主| 发表于 2020-4-13 09:38:40 | 只看该作者
红毛樱木 发表于 2020-4-9 18:04
新版PECMD由于监控了桌面壁纸,
在进入PE后,手动在一个图片上右键,设置为壁纸后,会被PECMD还原

手动设置后,同步 修改下 PECMD桌面注册表项, 或WALL命令 再执行一次。
回复

使用道具 举报

15237#
 楼主| 发表于 2020-4-13 09:41:01 | 只看该作者
527104427 发表于 2020-4-8 13:02
老大,报告BUG:

FIND --menu    变量名,窗口ID                              //查询窗口的MENU标识
...

这个是用来找 窗口 内置 的菜单的。 就是固定在窗口上的那种。
弹出菜单实际不属于窗口。

点评

哦,这样啊。再请教一个问题,能不能用envi @@style 的方式将一个窗口的关闭按钮给禁止掉?  详情 回复 发表于 2020-4-13 10:04
回复

使用道具 举报

15238#
发表于 2020-4-13 10:04:47 | 只看该作者
本帖最后由 527104427 于 2020-4-13 11:50 编辑
mdyblog 发表于 2020-4-13 09:41
这个是用来找 窗口 内置 的菜单的。 就是固定在窗口上的那种。
弹出菜单实际不属于窗口。

哦,这样啊。再请教一个问题,能不能用envi @@style 的方式将一个窗口的关闭按钮给禁止掉?https://docs.microsoft.com/en-us/windows/win32/winmsg/window-class-styles

在这里找到了一个CS_NOCLOSE: 0x0200,不知道怎么用

点评

将一个窗口的关闭按钮给禁止掉 不是 通过style, 而是通过系统菜单。 TEAM ENVI^ ENVIMODE=1| ENVI^ FORCELOCAL=1 WIN1 _SUB WIN1,W287H254,禁止关闭测试, ITEM ITEM1,L111T62W60H30,禁止关闭, Enable  详情 回复 发表于 2020-4-13 13:10
回复

使用道具 举报

15239#
 楼主| 发表于 2020-4-13 13:10:27 | 只看该作者
527104427 发表于 2020-4-13 10:04
哦,这样啊。再请教一个问题,能不能用envi @@style 的方式将一个窗口的关闭按钮给禁止掉?https://docs. ...

将一个窗口的关闭按钮给禁止掉 不是 通过style, 而是通过系统菜单。


TEAM ENVI^ ENVIMODE=1| ENVI^ FORCELOCAL=1
WIN1

_SUB WIN1,W287H254,禁止关闭测试,
    ITEM ITEM1,L111T62W60H30,禁止关闭, EnableClose 0,
    ITEM ITEM2,L111T129W60H30,允许关闭,EnableClose 1,
_END

// EnableClose 0/1  [hWinID]
_SUB EnableClose
    IFEX #%~2>0, SET &__WinID=%~2
    SET &SC_CLOSE=0xF060
    SET &MF_GRAYED=0x00000001
    SET &MF_BYCOMMAND=0x00000000
    IFEX #%1>0, SET &En=%MF_BYCOMMAND%!  CALC #&&En=%MF_GRAYED% | %MF_BYCOMMAND%
    CALL $--ret:&&hmenu user32.dll,GetSystemMenu,#%__WinID%,#0
    CALL $user32.dll,EnableMenuItem,#%hmenu%,#%SC_CLOSE%,#%En%%
_END


点评

请问 WAIT $handle 这个用法有示例吗?没试出来怎么用的。  详情 回复 发表于 2020-4-14 22:42
多谢老大!  详情 回复 发表于 2020-4-13 15:04
回复

使用道具 举报

15240#
发表于 2020-4-13 15:04:34 | 只看该作者
mdyblog 发表于 2020-4-13 13:10
将一个窗口的关闭按钮给禁止掉 不是 通过style, 而是通过系统菜单。

多谢老大!
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-12 18:49

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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