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

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

   火... [复制链接]
发表于 2013-4-5 01:12:33 | 显示全部楼层
控件后面指定响应事件的地方都只能单行是吗?那就单独弄个 _SUB 了。

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

使用道具 举报

 楼主| 发表于 2013-4-5 01:18:11 | 显示全部楼层
原帖由 2010qaqz111 于 2013-4-5 01:12 发表
控件后面指定响应事件的地方都只能单行是吗?那就单独弄个 _SUB 了。


是的 。  CALL OnTimer1 aa bb cc
_SBU  OnTimer1
    XX
    YY
_END

还可以  TEAM 复合命令
TEAM MESS 111| MESS 2222| CALC b=%b%+ 1

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

使用道具 举报

发表于 2013-4-5 01:21:34 | 显示全部楼层
EXEC 在运行命令行程序的时候能够让它不加载 mui 的多语言数据吗?

比如 netsh 命令,在中文win下面运行如果系统里有 netsh.exe.mui 的话就会输出中文的消息,这样不大方便脚本处理输出信息,不知道有没有办法让运行的时候不加载 mui 数据?
回复

使用道具 举报

发表于 2013-4-5 01:33:46 | 显示全部楼层
放弃,直接调那几个API都不行,大概是不同进程的关系,改名掉.mui文件也不行,中文就中文吧。

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

使用道具 举报

 楼主| 发表于 2013-4-5 01:42:18 | 显示全部楼层
原帖由 2010qaqz111 于 2013-4-5 01:12 发表
控件后面指定响应事件的地方都只能单行是吗?那就单独弄个 _SUB 了。



PECMD2012.1.75.1-130314-37.多窗口线程孵化版_win32_64.sfx:

控件后面指定响应事件的地方 支持 (单行) LAMBDA 。
  1. TIME -t:1 t1,10, [] 11 bb cc dd ee { TEAM MESS 1:%* @# OK| MESS 2:%* @# OK}
复制代码
回复

使用道具 举报

 楼主| 发表于 2013-4-5 02:43:11 | 显示全部楼层
原帖由 2010qaqz111 于 2013-4-5 01:21 发表
EXEC 在运行命令行程序的时候能够让它不加载 mui 的多语言数据吗?

比如 netsh 命令,在中文win下面运行如果系统里有 netsh.exe.mui 的话就会输出中文的消息,这样不大方便脚本处理输出信息,不知道有没有办 ...


LINUX 下  运行程序前 改变环境变量 LC_ALL=C 即可。 WINDOWS 没找打资料。
回复

使用道具 举报

发表于 2013-4-5 04:18:10 | 显示全部楼层
原帖由 mdyblog 于 2013-4-5 01:42 发表
PECMD2012.1.75.1-130314-37.多窗口线程孵化版_win32_64.sfx:

控件后面指定响应事件的地方 支持 (单行) LAMBDA 。
TIME -t:1 t1,10, [] 11 bb cc dd ee { TEAM MESS 1:%* @# OK| MESS 2:%* @# OK}  

回报 :
PECMD2012.1.75.1-130314-37.多窗口线程孵化版_win32_64.sfx

在 pecmd 或 pecmdedit 执行 (Win7SP1 x86)
TIME -t:1 t1,10, [] 11 bb cc dd ee { TEAM MESS 1:%* @# OK| MESS 2:%* @# OK}
都没反应.
回复

使用道具 举报

发表于 2013-4-5 08:31:59 | 显示全部楼层
DISP 命令支持多显示器吗?
回复

使用道具 举报

发表于 2013-4-5 09:54:01 | 显示全部楼层
原帖由 clonecd 于 2013-4-5 09:31 发表
mdyblog 老师:

  PE变量怎么脱掉最外一对引号?如:
ENVI &&AA=" AKSK    NNMM  "
  脱掉变量&AA的最外一对引号。

ENVI &&AA=" AKSK    NNMM  "
[]%&AA%{SET AA=%~1}
回复

使用道具 举报

发表于 2013-4-5 10:11:10 | 显示全部楼层
原帖由 clonecd 于 2013-4-5 10:08 发表

多谢指教。

客气。
这个 LAMBDA 函数很有用,特别是处理变量的一些零碎边角的时候,比如去引号,替换,拆零件之类的,一行就搞定了。
回复

使用道具 举报

 楼主| 发表于 2013-4-5 10:27:29 | 显示全部楼层
原帖由 nu852 于 2013-4-5 04:18 发表
回报 :
PECMD2012.1.75.1-130314-37.多窗口线程孵化版_win32_64.sfx
在 pecmd 或 pecmdedit 执行 (Win7SP1 x86)
TIME -t:1 t1,10, [] 11 bb cc dd ee { TEAM MESS 1:%* @# OK| MESS 2:%* @# OK}
都没反应.

要加 TEAM ENVI^ ENVIMODE=1| ENVI^ FORCELOCAL=1


PECMD2012.1.75.1-130314-38.多窗口线程孵化版_win32_64: 响应代码支持 多行。 用一个 共享变量。
用一个 共享变量: 形式上是一行, 但响应代码实际解开就是多行。可以是[] 开始的LAMBDA多行,或{开始的代码段多行。
多行定时器.WCS(包内有):
TEAM ENVI^ ENVIMODE=1| ENVI^ FORCELOCAL=1
WIN1
_SUB WIN1,W289H249,LAMBDA、多行定时器,
    SET-def-raw. CMD2=[] 11 bb cc dd ee { MESS B1:%*@#OK \n
    \ MESS B2:%*@#OK \n
    \}

    SET-def-raw. CMD3={ MESS C1:----@#OK \n
    \ MESS C2:----@#OK \n
    \}
    TIME -t:1 t1,10,[] 11 bb cc dd ee { TEAM MESS A1:%* @# OK| MESS A2:%* @# OK}   //LAMBDA 定时器
    TIME -t:1 t2,10,%CMD2%    //LAMBDA多行定时器 ,
    TIME -t:1 t3,10,%CMD3%    //多行定时器
_END
  
回复

使用道具 举报

 楼主| 发表于 2013-4-5 10:30:46 | 显示全部楼层
原帖由 2010qaqz111 于 2013-4-5 10:11 发表
客气。
这个 LAMBDA 函数很有用,特别是处理变量的一些零碎边角的时候,比如去引号,替换,拆零件之类的,一行就搞定了。


LAMBDA 函数 的设计初衷就是这样, 又称行式函数。 免得另外一个地方去又写一个零碎的函数。
回复

使用道具 举报

发表于 2013-4-5 11:23:28 | 显示全部楼层
DISP 能够指定某个显示器来设置分辨率吗?

另外设置分辨率之后可否延迟生效?即只写注册表不立即应用。

因为在加载显卡驱动之前预先设置分辨率然后加载显卡驱动完成后会自动重设分辨率等,这时候屏幕会闪一下,只写注册表不立即应用可以避免屏幕多闪一次,本来在 SHEL explorer 的时候就又会闪一下的(这个地方怎么避免屏幕闪烁?)。现在用的方法是在 DEVI 显卡驱动之前导入注册表来做的,这样比较死板,当然也能用就是,只不过这种方法就不惧通用性了。
回复

使用道具 举报

发表于 2013-4-5 11:58:38 | 显示全部楼层
LOGS 和 EXEC --logs --clone 能否自动产生和继承一个 %LogFile% 的变量?

fork 子进程的时候不好确定 log 应该放在哪,在 EXEC --logs --clone 的内存配置文件里面没有手工设定 LOGS 也不能跨进程继承最早有记录 LOGS 文件路径的顶级配置文件的变量,再 EXEC --logs --clone 第三级子进程的时候就不知道 LOG 文件应该放在哪了。现在都是用的硬编码,效果不太好。
回复

使用道具 举报

 楼主| 发表于 2013-4-5 12:00:59 | 显示全部楼层
原帖由 2010qaqz111 于 2013-4-5 10:11 发表


PECMD2012.1.75.1-130314-39.多窗口线程孵化版_win32_64.sfx: 不强调 窗口环境和非窗口环境。
下面代码 , 非窗口中也可以 开定时器, 注册消息。
非窗口控件操作.WCS:
TEAM ENVI^ ENVIMODE=1| ENVI^ FORCELOCAL=1
ENVI @this.MSG=#2::&&wp,&&lp, MESS  OnMSG2  
ENVI @this.SENDMSG=#2;     
TIME -t:1 t1,1, [] 11 bb cc dd ee { TEAM MESS A1:%* @# OK| MESS A2:%* @# OK}   //LAMBDA 定时器
WAIT 100  //等定时器1ms启动后再退出   


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

使用道具 举报

 楼主| 发表于 2013-4-5 12:03:49 | 显示全部楼层
原帖由 2010qaqz111 于 2013-4-5 11:23 发表
DISP 能够指定某个显示器来设置分辨率吗?
另外设置分辨率之后可否延迟生效?即只写注册表不立即应用。
因为在加载显卡驱动之前预先设置分辨率然后加载显卡驱动完成后会自动重设分辨率等,这时候屏幕会闪 ...

1: 没有多显示器环境, 不知怎么调试哦!?
2: 即只写注册表不立即应用。
这个可以的。
回复

使用道具 举报

发表于 2013-4-5 12:15:37 | 显示全部楼层
如果是笔记本的话接一个外置可以,台式的话是比较麻烦,没有环境调试那就没办法了,还是搞注册表得了=。=
回复

使用道具 举报

 楼主| 发表于 2013-4-5 13:01:16 | 显示全部楼层
原帖由 2010qaqz111 于 2013-4-5 11:58 发表
LOGS 和 EXEC --logs --clone 能否自动产生和继承一个 %LogFile% 的变量?
fork 子进程的时候不好确定 log 应该放在哪,在 EXEC --logs --clone 的内存配置文件里面没有手工设定 LOGS 也不能跨进程继承最早有 ...


1: FORK 能继承 环境变量的。
FORK 前修改  “环境变量”(不是PE变量) ENVI  LogFile=log-2.log
FORK 的 脚本中 LOGS *%LogFile%

LogFile 可以自己加 吧。

2: EXEC --logs:[?]
LOGS文件 --clone
可以指定一个log文件。

可以用 %%__PID%% 按子进程ID来生成不同的LOG

logs_test.WCS:
LOGS * aa-main-%__PID%%.log

TEAM ENVI^ ENVIMODE=1| ENVI^ FORCELOCAL=1
SET-def CMD1=MESS 111

EXEC --logs:?*aa-%%__PID%%.log --clone:&CMD1   a bb cc   


3: 至于位置。 别太计较了。 LOGS  正常情况不用。 随便哪儿都行, 如D:\ ,当前目录。
  1. 3032 74367227765273.684 [ENTER:D:\MDY\DESKTOP\logs_test.WCS]
  2. 3032 74367228848697.303 [LOGS * aa-main-4128.log] <0> :操作成功完成。
  3. 3032 74367228973639.071 [ENVI^ ENVIMODE=1] <0> :操作成功完成。
  4. 3032 74367229029862.867 [ENVI^ FORCELOCAL=1] <0> :操作成功完成。
  5. 3032 74367229068237.839 [TEAM ENVI^ ENVIMODE=1| ENVI^ FORCELOCAL=1] <0> :操作成功完成。
  6. 3032 74367229182916.533 [SET-def CMD1=MESS 111] <0> :操作成功完成。
  7. 3032 74367237919023.455 [EXEC --logs:?*aa-%__PID%.log --clone:&CMD1   a bb cc] <0> :操作成功完成。
  8. 3032 74367238798970.479 [LEAVE:D:\MDY\DESKTOP\logs_test.WCS]
  9. 3032 74367239033236.295 [LEAVE:]
复制代码

  1. 3012 74367275705876.368 [ENTER:D:\MDY\DESKTOP\*map:268:18]
  2. 3012 74367276383239.240 [LOGS *aa-3788.log] <0> :操作成功完成。
  3. 3012 74368415036027.851 [MESS 111] <0> :操作成功完成。
  4. 3012 74368416256887.414 [LEAVE:*map:268:18]
  5. 3012 74368417286318.340 [LEAVE:]
复制代码



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

使用道具 举报

 楼主| 发表于 2013-4-5 13:05:25 | 显示全部楼层
原帖由 2010qaqz111 于 2013-4-5 12:15 发表
如果是笔记本的话接一个外置可以,台式的话是比较麻烦,没有环境调试那就没办法了,还是搞注册表得了=。=


笔记本的话接一个外置可以?
我在VGA口(投影仪口) 上接了一个, 两个 显示的都一样, 设备管理只有一个显卡。
你说外置式USB显卡吗? 没有。

你搞定了, 将注册表的操作流程 告诉我, 我加到PECMD中。 或者 写成一个 内置脚本函数。

笔记本其实有2个显卡。 但始终只有其中一个工作。不知怎么2个都用上。 (Intel内置, NVIDIA 独显)

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

使用道具 举报

 楼主| 发表于 2013-4-5 13:55:10 | 显示全部楼层
原帖由 2010qaqz111 于 2013-4-5 11:23 发表
DISP 能够指定某个显示器来设置分辨率吗?

另外设置分辨率之后可否延迟生效?即只写注册表不立即应用。

因为在加载显卡驱动之前预先设置分辨率然后加载显卡驱动完成后会自动重设分辨率等,这时候屏幕会闪 ...


PECMD2012.1.75.1-130314-40.多窗口线程孵化版_win32_64.sfx.zip:

DISP 已加 延时开关
*delay则只写注册表

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

使用道具 举报

发表于 2013-4-5 14:42:11 | 显示全部楼层
原帖由 2010qaqz111 于 2013-4-5 01:21 发表
EXEC 在运行命令行程序的时候能够让它不加载 mui 的多语言数据吗?

比如 netsh 命令,在中文win下面运行如果系统里有 netsh.exe.mui 的话就会输出中文的消息,这样不大方便脚本处理输出信息,不知道有没有办 ...

你这话是错误的!
cmd.exe /c chcp 437&netsh /?
这样得到的是英文帮助
回复

使用道具 举报

 楼主| 发表于 2013-4-5 15:18:35 | 显示全部楼层
原帖由 2011hwo1 于 2013-4-5 14:42 发表

你这话是错误的!
cmd.exe /c chcp 437&netsh /?
这样得到的是英文帮助


这种方法 对控制台 chcp 可行。

EXEC   cmd.exe /k "chcp 437 & bcdedit"    //有效 , 控制台

EXEC*  &&V1=!cmd.exe /c "chcp 437 & bcdedit"   //无效, 非控制台,而是管道

EXEC cmd.exe /k "chcp 437 & calc" //无效 , CALC是非控制台程序

  1. FILE aa.tmp
  2. EXEC =!cmd.exe /c "chcp 437&bcdedit > aa.tmp"
  3. READ aa.tmp,*r,&&V1
  4. FILE aa.tmp
  5. MESS %&V1% //英文

  6. EXEC* &&V2=!bcdedit
  7. MESS %&V2% //中文
复制代码



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

使用道具 举报

发表于 2013-4-5 15:20:22 | 显示全部楼层
netsh本来就是控制台的程序
回复

使用道具 举报

 楼主| 发表于 2013-4-5 15:27:03 | 显示全部楼层
原帖由 2011hwo1 于 2013-4-5 15:20 发表
netsh本来就是控制台的程序

是, 这个可以。
回复

使用道具 举报

发表于 2013-4-5 15:28:47 | 显示全部楼层
原帖由 mdyblog 于 2013-4-5 15:18 发表


这种方法 对控制台 chcp 可行。

EXEC   cmd.exe /k "chcp 437 & bcdedit"    //有效 , 控制台

EXEC &&V1=!cmd.exe /c "chcp 437 & bcdedit"   //无效, 非控制台,而是管道

EXEC cmd.exe /k ...

EXEC*&& V1=cmd.exe "/c chcp 437 &netsh/?"
EXEC* &&V2=!cmd.exe /c "chcp 437 & bcdedit"
mess %V1% %v2%
你代码错误了,少了个*
回复

使用道具 举报

 楼主| 发表于 2013-4-5 17:04:20 | 显示全部楼层
原帖由 2011hwo1 于 2013-4-5 15:28 发表

EXEC*&& V1=cmd.exe "/c chcp 437 &netsh/?"
EXEC* &&V2=!cmd.exe /c "chcp 437 & bcdedit"
mess %V1% %v2%
你代码错误了,少了个*

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


EXEC* &&V1=cmd.exe "/c chcp 437 &netsh/?"
MESS %&V1%

结果是中文:
  1. 用法: netsh [-a AliasFile] [-c Context] [-r RemoteMachine] [-u [DomainName\]UserName] [-p Password | *]
  2. [Command | -f ScriptFile]
  3. 下列指令有效:
  4. 此上下文中的命令:
  5. ? - 显示命令列表。
  6. add - 在项目列表上添加一个配置项目。
  7. advfirewall - 更改到 `netsh advfirewall' 上下文。
复制代码

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

使用道具 举报

 楼主| 发表于 2013-4-5 17:52:16 | 显示全部楼层
原帖由 2010qaqz111 于 2013-4-5 01:33 发表
放弃,直接调那几个API都不行,大概是不同进程的关系,改名掉.mui文件也不行,中文就中文吧。


感觉  和这个函数有关:
BOOL SetLocaleInfoW(  LCID Locale,  LCTYPE LCType,   LPCWSTR lpLCData  );
回复

使用道具 举报

发表于 2013-4-5 19:43:05 | 显示全部楼层
原帖由 mdyblog 于 2013-4-5 13:05 发表


笔记本的话接一个外置可以?
我在VGA口(投影仪口) 上接了一个, 两个 显示的都一样, 设备管理只有一个显卡。
你说外置式USB显卡吗? 没有。

你搞定了, 将注册表的操作流程 告诉我, 我加到PECMD中 ...


我指的是多显示器,不是显卡。在完整的 win 下面,如果是 n 卡,驱动里面有选择默认用哪个显卡。

我记得设置屏幕分辨率并不用牵扯到显卡上的,等下我查查资料看。


注册表方式做成通用手段貌似不大可行,基本上相当于硬编码了,我是设置好分辨率后,从 HKLM\SYSTEM\CurrentControlSet\Control\GraphicsDrivers 这里导出 REG,然后在 DEVI 显卡驱动之前 REG IMPORT(REGI 能导入 REG 文件吗?多启动一个进程老觉得不爽) 的。

USB 外置显卡这东西太稀奇了,一万年没有见过啊。
回复

使用道具 举报

发表于 2013-4-5 19:45:01 | 显示全部楼层
原帖由 2011hwo1 于 2013-4-5 14:42 发表

你这话是错误的!
cmd.exe /c chcp 437&netsh /?
这样得到的是英文帮助

chcp 了不能用 EXEC* 得到返回,算了中文就中文了。

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

使用道具 举报

发表于 2013-4-5 19:56:36 | 显示全部楼层
ENVI @窗口和控件名.POSTMSG=[:变量名;]消息号[;参数wPrm[;参数lPrm]]     //异步发送消息
ENVI @窗口和控件名.SENDMSG=[:变量名;]消息号[;参数wPrm[;参数lPrm]]     //同步发送消息
不知道改了哪里,这两个无法传送参数了,请修改!
回复

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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