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

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

   火... [复制链接]
 楼主| 发表于 2013-4-5 20:00:25 | 显示全部楼层
原帖由 2010qaqz111 于 2013-4-5 19:45 发表
chcp 了不能用 EXEC* 得到返回,算了中文就中文了。


用法5543#有, 再贴;
  1. TEAM ENVI^ ENVIMODE=1| ENVI^ FORCELOCAL=1
  2. SET TMPF=.%&__PID%
  3. FILE aa.%&__PID%.tmp
  4. EXEC =!cmd.exe /c "chcp 437&bcdedit > aa.%&__PID%.tmp"
  5. READ  aa.%&__PID%.tmp,*r,&&V1      
  6. FILE aa.%&__PID%.tmp
  7. MESS  %&V1%   //英文
复制代码
算法: 隐藏方式执行并 输出到一个 临时文件, 再 读取该文件, 再删掉 临时文件; 显示 。
回复

使用道具 举报

发表于 2013-4-5 20:02:13 | 显示全部楼层
原帖由 mdyblog 于 2013-4-5 17:04 发表

加了*不一样,
加了*是管道 , 不是 控制台方式,  就无效了。


EXEC* &&V1=cmd.exe "/c chcp 437 &netsh/?"
MESS %&V1%
结果是中文:用法: netsh [-a AliasFile] [-c Context] [-r RemoteMachine] ...

怪了,批处理运行cmd.exe "/c chcp 437 &netsh/?">d:\a.tem
得到的内容是英文,而EXEC* &&V1=cmd.exe "/c chcp 437 &netsh/?"得到的是中文
回复

使用道具 举报

发表于 2013-4-5 20:04:49 | 显示全部楼层
估计是exec* 的代码页不被转换引起的
回复

使用道具 举报

 楼主| 发表于 2013-4-5 20:10:26 | 显示全部楼层
原帖由 2011hwo1 于 2013-4-5 19:56 发表
ENVI @窗口和控件名.POSTMSG=[:变量名;]消息号[;参数wPrm[;参数lPrm]]     //异步发送消息
ENVI @窗口和控件名.SENDMSG=[:变量名;]消息号[;参数wPrm[;参数lPrm]]     //同步发送消息
不知道改了哪里,这两个 ...

可以啊?!
  1. TEAM ENVI^ ENVIMODE=1| ENVI^ FORCELOCAL=1
  2. WIN1
  3. _SUB WIN1,W289H249,新窗口1,
  4.     ENVI @WIN1.MSG=#1::wp,lp,MESS- HELLO wp=[%wp%],lp=[%lp%]@#OK
  5.     ENVI @WIN1.SENDMSG=#1;11;12
  6.     ENVI @WIN1.POSTMSG=#1;21;22
  7. _END  
复制代码
回复

使用道具 举报

发表于 2013-4-5 20:18:46 | 显示全部楼层
原帖由 mdyblog 于 2013-4-5 20:10 发表

可以啊?!
TEAM ENVI^ ENVIMODE=1| ENVI^ FORCELOCAL=1
WIN1
_SUB WIN1,W289H249,新窗口1,
    ENVI @WIN1.MSG=#1::wp,lp,MESS- HELLO wp=[%wp%],lp=[%lp%]@#OK
    ENVI @WIN1.SENDMSG=#1;11;12
    E ...

TEAM ENVI^ ENVIMODE=1| ENVI^ FORCELOCAL=1
WIN1
_SUB WIN1,W289H249,新窗口1,
    ENVI @WIN1.MSG=#1::wp,lp,MESS- HELLO wp=[%wp%],lp=[%lp%]@#OK
    ENVI @WIN1.SENDMSG=#1,11,12
    ENVI @WIN1.POSTMSG=#1,21,22
_END  
再试试
回复

使用道具 举报

发表于 2013-4-5 20:20:44 | 显示全部楼层
现在只能:ENVI @WIN1.SENDMSG=#1;11;12
不能使用:ENVI @WIN1.SENDMSG=#1,11,12
回复

使用道具 举报

发表于 2013-4-5 20:25:01 | 显示全部楼层
原帖由 mdyblog 于 2013-4-5 20:00 发表


用法5543#有, 再贴;TEAM ENVI^ ENVIMODE=1| ENVI^ FORCELOCAL=1
SET TMPF=.%&__PID%
FILE aa.%&__PID%.tmp
EXEC =!cmd.exe /c "chcp 437&bcdedit > aa.%&__PID%.tmp"
READ  aa.%&__PID%.tmp,*r,&&V1  ...

这个方法知道,就是不想走临时文件。

[ 本帖最后由 2010qaqz111 于 2013-4-5 20:26 编辑 ]
回复

使用道具 举报

发表于 2013-4-5 20:26:09 | 显示全部楼层
原帖由 mdyblog 于 2013-4-5 20:00 发表


用法5543#有, 再贴;TEAM ENVI^ ENVIMODE=1| ENVI^ FORCELOCAL=1
SET TMPF=.%&__PID%
FILE aa.%&__PID%.tmp
EXEC =!cmd.exe /c "chcp 437&bcdedit > aa.%&__PID%.tmp"
READ  aa.%&__PID%.tmp,*r,&&V1  ...

用下面的代码是英文
EXEC* &&V1=!cmd.exe "/c graftabl 437 &netsh/?"
MESS %&V1%  

[ 本帖最后由 2011hwo1 于 2013-4-5 20:31 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2013-4-5 20:44:51 | 显示全部楼层
原帖由 2011hwo1 于 2013-4-5 20:20 发表
现在只能:ENVI @WIN1.SENDMSG=#1;11;12
不能使用:ENVI @WIN1.SENDMSG=#1,11,12

哦, 改了。
回复

使用道具 举报

 楼主| 发表于 2013-4-5 20:48:19 | 显示全部楼层
原帖由 2011hwo1 于 2013-4-5 20:26 发表

用下面的代码是英文
  

是的 , 不能EXEC*

而用 EXEC
TEAM ENVI^ ENVIMODE=1| ENVI^ FORCELOCAL=1
// LangRun  返回名 语言  命令
_SUB LangRun *
    FILE aa.%&__PID%.tmp
    MSTR &&cmd1=<3->%*
    EXEC =!cmd.exe /c "chcp %2 & %cmd1% > aa.%&__PID%.tmp"
    READ  aa.%&__PID%.tmp,*r,%~1      
    FILE aa.%&__PID%.tmp   
_END
SET &&V1=
LangRun  &&V1  437  netsh/?  
MESS  %&V1%   //英文  

结果英文:
  1. Usage: netsh [-a AliasFile] [-c Context] [-r RemoteMachine] [-u [DomainName\]UserName] [-p Password | *]
  2.              [Command | -f ScriptFile]
  3. The following commands are available:
  4. Commands in this context:
  5. ?              - Displays a list of commands.
  6. add            - Adds a configuration entry to a list of entries.
  7. advfirewall    - Changes to the `netsh advfirewall' context.
  8. branchcache    - Changes to the `netsh branchcache' context.
  9. bridge         - Changes to the `netsh bridge' context.
  10. delete         - Deletes a configuration entry from a list of entries.
  11. dhcpclient     - Changes to the `netsh dhcpclient' context.
复制代码

[ 本帖最后由 mdyblog 于 2013-4-5 20:56 编辑 ]
回复

使用道具 举报

发表于 2013-4-5 21:13:15 | 显示全部楼层
pecmdedit能不能不将 TAB 转换为空格?
回复

使用道具 举报

发表于 2013-4-5 21:28:19 | 显示全部楼层
原帖由 mdyblog 于 2013-4-5 20:48 发表

是的 , 不能EXEC*
而用 EXEC
TEAM ENVI^ ENVIMODE=1| ENVI^ FORCELOCAL=1
// LangRun  返回名 语言  命令
_SUB LangRun *
    FILE aa.%&__PID%.tmp
    MSTR &&cmd1=%*
    EXEC =!cmd.exe /c "chc ...

下面的代码要精简好用些,还是不研究chcp的问题了
EXEC* &&V1=!cmd.exe "/c graftabl 437>nul &netsh/?"
MESS %&V1%
回复

使用道具 举报

发表于 2013-4-5 21:36:48 | 显示全部楼层
原帖由 2011hwo1 于 2013-4-5 21:28 发表

下面的代码要精简好用些,还是不研究chcp的问题了
EXEC* &&V1=!cmd.exe "/c graftabl 437>nul &netsh/?"
MESS %&V1%

这个的输出确实是可以的。
回复

使用道具 举报

 楼主| 发表于 2013-4-5 22:53:39 | 显示全部楼层
原帖由 2011hwo1 于 2013-4-5 21:28 发表

下面的代码要精简好用些,还是不研究chcp的问题了
EXEC* &&V1=!cmd.exe "/c graftabl 437>nul &netsh/?"
MESS %&V1%


graftabl 哪儿的? 我的系统怎么没有?
回复

使用道具 举报

发表于 2013-4-5 22:54:19 | 显示全部楼层
如果通过 PECMD shut 来关机可否在关机的时候执行一个自定义的脚本?用来保存软件和 wifi 的设置等。
回复

使用道具 举报

发表于 2013-4-5 22:55:24 | 显示全部楼层
原帖由 mdyblog 于 2013-4-5 22:53 发表


graftabl 哪儿的? 我的系统怎么没有?

graftabl 是一个 com 程序,完整的 win7 系统有。

和 graphics.com 是一个系列的,DOS时代的遗留产物。
回复

使用道具 举报

发表于 2013-4-5 22:58:24 | 显示全部楼层
graftabl是xp都是自带的,你那大概是精简版吧.被精简掉了
回复

使用道具 举报

发表于 2013-4-5 23:05:53 | 显示全部楼层
原帖由 2010qaqz111 于 2013-4-5 22:54 发表
如果通过 PECMD shut 来关机可否在关机的时候执行一个自定义的脚本?用来保存软件和 wifi 的设置等。

你那不是winpe吧,如果是正常系统的话关机时会检测是否存在关机脚本,在开机时会检测是否存在开机脚本,如果存在的话会在关机时在正在关机提示前执行关机脚本的,在启动时在登陆进入系统前执行开机脚本.
回复

使用道具 举报

发表于 2013-4-5 23:09:26 | 显示全部楼层
原帖由 2011hwo1 于 2013-4-5 23:05 发表

你那不是winpe吧,如果是正常系统的话关机时会检测是否存在关机脚本,在开机时会检测是否存在开机脚本,如果存在的话会在关机时在正在关机提示前执行关机脚本的,在启动时在登陆进入系统前执行开机脚本.

Win8 pe

我设置了 HOTK Ctrl+Win+Alt+Shift+F4,PECMD.EXE SHUT 来关机。

在哪里设置关机脚本?
回复

使用道具 举报

 楼主| 发表于 2013-4-5 23:09:59 | 显示全部楼层
原帖由 2010qaqz111 于 2013-4-5 22:55 发表

graftabl 是一个 com 程序,完整的 win7 系统有。

和 graphics.com 是一个系列的,DOS时代的遗留产物。

机器WIN7X64自带的, 4张DVD 13G。

从 XP 拷过来, 能执行, 正常。
回复

使用道具 举报

 楼主| 发表于 2013-4-5 23:12:37 | 显示全部楼层
原帖由 2010qaqz111 于 2013-4-5 22:54 发表
如果通过 PECMD shut 来关机可否在关机的时候执行一个自定义的脚本?用来保存软件和 wifi 的设置等。


关机执行:
%SysteRoot%\System32\OnShutdown.wcs  shutdown
吗?
回复

使用道具 举报

发表于 2013-4-5 23:16:55 | 显示全部楼层
步骤1 开始菜单->运行->输入“gpedit.msc”->确定
步骤2 在控制台界面左侧“控制台根节点”下的“‘本地计算机’策略”中依次展开“Windows设置”、“脚本(启动/关机)”,双击右侧窗口中的“关机”,打开“关机属性”界面。

步骤3在“关机属性”界面中单击“添加”按钮打开“添加脚本”对话框,我们可以为脚本命名,如“Backup.bat”。

步骤4设置完成后单击“文件”、“保存”命令来保存控制台,以便以后进行调整。下次关机的时候,你会发现关机提示窗口中除了“正在关机...”这样的信息外,还会显示“正在执行关机脚本”的提示,表明关机脚本正在执行。
回复

使用道具 举报

发表于 2013-4-5 23:27:02 | 显示全部楼层
原帖由 mdyblog 于 2013-4-5 23:09 发表

机器WIN7X64自带的, 4张DVD 13G。

从 XP 拷过来, 能执行, 正常。

先天缺陷哈,怎么不带graftabl.com
基于 Itanium 的版本的和x64的windows好像都没有这个命令?
回复

使用道具 举报

 楼主| 发表于 2013-4-5 23:33:57 | 显示全部楼层
原帖由 mdyblog 于 2013-4-5 23:12 发表


关机执行:
%SysteRoot%\System32\OnShutdown.wcs  shutdown
吗?


PECMD2012.1.75.1-130314-41.多窗口线程孵化版_win32_64.sfx:
关机时自动执行:
LOAD  %SystemRoot%\System32\OnShutdown.wcs   shutdown

[ 本帖最后由 mdyblog 于 2013-4-5 23:58 编辑 ]
回复

使用道具 举报

发表于 2013-4-6 02:01:53 | 显示全部楼层
原帖由 mdyblog 于 2013-4-5 23:33 发表


PECMD2012.1.75.1-130314-41.多窗口线程孵化版_win32_64.sfx:
关机时自动执行:
LOAD  %SystemRoot%\System32\OnShutdown.wcs   shutdown

shutdown 跟在后面?这个格式不会和参数混淆么?

而且用 LOAD 预先加载的话貌似也不大灵活,加在 SHUT 上比较好,这样可以注册不同的关机和重启脚本,比如:

HOTK Ctrl+Win+Alt+R,PECMD SHUT R //直接重启,不保存
HOTK Ctrl+Win+Alt+T,PECMD SHUT R --load:%&WinSys32%\保存cookies和wifi.ini

HOTK Ctrl+Win+Alt+Shift+F4,PECMD SHUT //直接关机,不保存
HOTK Ctrl+Win+Alt+F4,PECMD SHUT --load:%&WinSys32%\保存cookies和wifi.ini



另外,EXEC 的说明里有一个 --hook,是修改 explorer 的关机代码,这个在 8pe 里有用吗?有必要用吗?
回复

使用道具 举报

发表于 2013-4-6 07:58:26 | 显示全部楼层
HOTK Ctrl+Win+Alt+F4,PECMD SHUT --load:%&WinSys32%\保存cookies和wifi.ini
改成 HOTK Ctrl+Win+Alt+F4,PECMD load:%&WinSys32%\保存cookies和wifi.ini SHUT
HOTK Ctrl+Win+Alt+T,PECMD SHUT R --load:%&WinSys32%\保存cookies和wifi.ini
改成HOTK Ctrl+Win+Alt+T,PECMD load %&WinSys32%\保存cookies和wifi.ini SHUT R
这样不好吗,干什么一定要改SHUT,跟pecmd过不去,你的目的是在系统没有桌面后运行脚本是吧?
回复

使用道具 举报

发表于 2013-4-6 08:03:47 | 显示全部楼层
本帖最后由 2010qaqz111 于 2013-4-6 08:12 编辑
HOTK Ctrl+Win+Alt+F4,PECMD SHUT --load:%&WinSys32%\保存cookies和wifi.ini
改成 HOTK Ctrl+Win+Alt+F4, ...
2011hwo1 发表于 2013-4-6 07:58


这样也行,在脚本里面 SHUT 就可以了。不过通过脚本 SHUT 还是主动运行的,目的就是在正常操作流程关机或者重启之前保存设置到非内存盘的位置,所以事件驱动类型的机制会更完善些,就是不知道 PECMD 或者 PE 系统本身支持不支持,比如前面那个组策略的设置。

改 SHUT 貌似确实没必要,改了还是得主动运行 SHUT 才可以,完全可以用运行一个脚本代替。
回复

使用道具 举报

 楼主| 发表于 2013-4-6 08:14:15 | 显示全部楼层
本帖最后由 mdyblog 于 2013-4-6 08:21 编辑
shutdown 跟在后面?这个格式不会和参数混淆么?

而且用 LOAD 预先加载的话貌似也不大灵活,加在 SHUT ...
2010qaqz111 发表于 2013-4-6 02:01


1: EXEC 的说明里有一个 --hook,是修改 explorer 的关机代码 .
  有用, 否则关机菜单 就没反应的。
  不过, 这是PECMD 内部调用。 一般脚本不用。  SHEL 会调用的。

2:HOTK Ctrl+Win+Alt+F4,PECMD SHUT --load:%&WinSys32%\保存cookies和wifi.ini
这个有问题的。
关机又好多路径的。 大部分路径不执行上面的  SHUT --load:%&WinSys32%\保存cookies和wifi.ini。
如 关机菜单, 用户自己敲一个SHUT 命令。


关机菜单 是没有任何 信息的。
所以用一个 固定的 OnShutdown.WCS.

参数是预留的接口, shutdown=关机, 将来可能有其他参数,表示其他含义。

关机菜单 的缘故, 改 SHUT 还是必须的! 这里用户无法输入任何信息的。

3:需要 %&WinSys32%\保存cookies和wifi.ini
可以在  OnShutdown.WCS 里面做文章, 再 根据环境变量或注册表, 调用 %&WinSys32%\保存cookies和wifi.ini 参数
这样比较灵活。 写在 PECMD.EXE就比较死了。

4: HOTK Ctrl+Win+Alt+F4,PECMD SHUT --load:%&WinSys32%\保存cookies和wifi.ini
可以直接写成 HOTK Ctrl+Win+Alt+F4,PECMD TEAM load:%&WinSys32%\保存cookies和wifi.ini  参数表| SHUT
回复

使用道具 举报

发表于 2013-4-6 08:42:23 | 显示全部楼层
本帖最后由 2010qaqz111 于 2013-4-6 08:46 编辑
PECMD2012.1.75.1-130314-41.多窗口线程孵化版_win32_64.sfx:
关机时自动执行:
LOAD  %SystemRoot%\System32\OnShutdown.wcs   shutdown
mdyblog 发表于 2013-4-6 08:14
哦,明白了,这个意思是,只要存在 %SystemRoot%\System32\OnShutdown.wcs 这个文件,在关机的时候就会自动调用,然后传入一个参数 shutdown,表明是执行关机操作。是这样的吧。
回复

使用道具 举报

发表于 2013-4-6 08:47:00 | 显示全部楼层
关于 LOGO 命令发现一些问题。
1. LOGO 实际上就是一个覆盖全屏大小的窗口吧,在它显示并且具有键盘焦点的时候,如果按 ESC 会立刻淡出掉。

2. LOGO 是开的一个非独占窗口跟主线是一个线程吧,主线忙的时候鼠标点击 LOGO 窗口会出现 Windows 正在忙碌的提示,然后窗口变成蒙上一层半透明白色的样子,出来一个框让用户选“结束进程”或者“等待”。理论上开在另一个线程可以避免这个问题,不过我还没试。

3. 在它显示期间,如果加载了显卡驱动并且改变了屏幕分辨率(加载显卡驱动之前合并提前导出的注册表),LOGO 窗口会停留在左上角撑不满全屏,这个时候如果桌面还没出来的话,其余部分就是一片黑色,否则就是 LOGO 窗口挡住桌面背景的左上那一块。


另外,在 SHEL explorer.exe 之前,有办法设置桌面背景壁纸吗?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-10 20:35

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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