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

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

   火... [复制链接]
 楼主| 发表于 2013-3-19 08:13:46 | 显示全部楼层

PECMDEDIT 有64位了

PECMDEDIT 有64位了
包内 有。 X64下
回复

使用道具 举报

 楼主| 发表于 2013-3-19 11:59:33 | 显示全部楼层
PECMD32   EXEC 增加了 --64 开关
这样 能够运行System32中的程序。



EXEC*  --64 &&r=BCDEDIT
MESS  %&r%

在多线程中, 有瞬间的副作用,瞬间改变了其他线程API的工作模式,瞬间又切换回来了。  所以默认没有开启。
单线程没有副作用(没有其他线程)。

对PECMD64 没有任何影响和作用。(不理)

PECMDEDIT32 也自动加上了这个开关。 (PECMDEDIT64没必要了)

[ 本帖最后由 mdyblog 于 2013-3-19 12:27 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2013-3-19 12:25:46 | 显示全部楼层
原帖由 clonecd 于 2013-3-19 12:20 发表
这样用也可以的吧?     EXEC*-  --64 &&r=BCDEDIT


可以的。 原有的行为不变。 只是 再 加 一个开关。
回复

使用道具 举报

 楼主| 发表于 2013-3-19 22:43:29 | 显示全部楼层
原帖由 clonecd 于 2013-3-19 21:51 发表
mdyblog 老师,问一个SHOW的命令。
用来卸载Z:,不管这个Z:盘是什么磁盘号分区号,以下用法对不对?

SHOW - ,Z:

顺便再问一下,这个是调用 DeleteVolumeMountPoint 这个函数的吗?

1. 不分什么磁盘号分区号, 还是光驱,软驱。。。。

2。
SHOW *- ,Z:    //调用 DeleteVolumeMountPoint

没有*则不调用。
回复

使用道具 举报

发表于 2013-3-19 23:34:34 | 显示全部楼层
如何检测当前运行的Windows环境的版本?
回复

使用道具 举报

 楼主| 发表于 2013-3-19 23:45:48 | 显示全部楼层
原帖由 2010qaqz111 于 2013-3-19 23:34 发表
如何检测当前运行的Windows环境的版本?


EXEC*  &&ver=!cmd /c ver
MESS  【%&ver%】
// 【Microsoft Windows [版本 6.1.7601]】
回复

使用道具 举报

 楼主| 发表于 2013-3-19 23:49:46 | 显示全部楼层
原帖由 clonecd 于 2013-3-19 12:20 发表
这样用也可以的吧?     EXEC*-  --64 &&r=BCDEDIT

新版 PECMD32 EXEC 默认 【解除对X64文件系统的限制】,内部已解决 多线程问题。
--no64 则 取消 这种 解除。

另外, 也解除了 对 注册表的限制。
PECMD64 没有影响也没有副作用。 不理会。

EXEC*-  &&r=!BCDEDIT
MESS. %&r%

[ 本帖最后由 mdyblog 于 2013-3-19 23:52 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2013-3-20 14:51:05 | 显示全部楼层

支持 this函数 和this代码段

原帖由 clonecd 于 2013-3-20 00:03 发表
这个好啊。

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


支持 this函数 和this代码段

1. this函数,就是在函数名后 加空格和一*,【 *】。 对此函数的调用均为this调用。方便定义  PE变量。格式如下:

_SUB 函数名 *

HELP  _SUB


_SUB  ABC *
    ENVI &&V=1**67
_END
ABC
MESS  【%&&V%】
//结果是 【1**67】

2. this代码段, 就是在{后紧接星号*。  在原有执行栈上运行。方便定义 PE变量, 控件等。作为纯范围指示。 格式如下:
{*
....
}

HELP 代码段

ENVI I=2
IFEX $1=1,
{*
   ENVI &&V[%I%]=1**67YES
}!
{*
   ENVI &&V[%I%]=1**67NO
}


MESS 【%&&V[2]%】
//结果是 【1**67YES】

ENVI I=1
LOOP #%I% <= 100,
{*
   ENVI &&V[%I%]=1**67-%I%
   CALC I=%I% + 1
}
MESS 【%&&V[1]%】
//结果是 【1**67-1】


回复

使用道具 举报

发表于 2013-3-20 19:28:07 | 显示全部楼层
原帖由 mdyblog 于 2013-3-19 23:45 发表


EXEC*  &&ver=!cmd /c ver
MESS  【%&ver%】
// 【Microsoft Windows [版本 6.1.7601]】

我没说清楚,问题应该是如何得知当前运行的环境是否PE?是哪个核心版本的windows环境?

这种写法我知道,但是这只能得到windows核心版本,无法分辨是否PE。

PE 和 正常 win 系统的区别是核心从内存盘加载,这自然导致注册表内的改动不能保存,也因此保护了 PE 不会因本次运行中造成的改动而被破坏,这应该是 PE 和正常 win 最根本的差别吧。
我想知道除了这一点外,PE 和正常的 win 还有什么区别?哪些又是可以用来判断当前环境是 win 还是 PE?
回复

使用道具 举报

 楼主| 发表于 2013-3-20 21:23:23 | 显示全部楼层
原帖由 2010qaqz111 于 2013-3-20 19:28 发表

我没说清楚,问题应该是如何得知当前运行的环境是否PE?是哪个核心版本的windows环境?

这种写法我知道,但是这只能得到windows核心版本,无法分辨是否PE。

PE 和 正常 win 系统的区别是核心从内存盘加 ...


环境变量 SystemDrive 可以判别 PE 。
为 X: 则 为PE。
FIND $X:=%SystemDrive%,  MESS IN PE!  MESS NOT IN PE
回复

使用道具 举报

 楼主| 发表于 2013-3-20 21:28:33 | 显示全部楼层
PECMD2012.1.75.1-130314-14.多窗口线程孵化版_win32_64.sfx

支持画布。
※可用"ENVI @窗口.Paint=函数名",设置画布回调函数,函数参数为HDC 宽 高.
※可用"ENVI @窗口.InvalidateRect=[左]:[上]:[右]:[下]:[是否擦除背景]",刷新。

参见 画布演示.wcs (包内有)
动画 哦。





[ 本帖最后由 mdyblog 于 2013-3-21 10:53 编辑 ]
Snap1.gif

画布演示.zip

699 Bytes, 下载次数: 6

回复

使用道具 举报

发表于 2013-3-20 22:48:38 | 显示全部楼层
原帖由 <i>mdyblog</i> 于 2013-3-20 21:23 发表
环境变量 SystemDrive 可以判别 PE 。
为 X: 则 为PE。
FIND $X:=%SystemDrive%,  MESS IN PE!  MESS NOT IN PE


正常系统也有可能是安装在 X 盘的吧?虽然基本没人会这么干。

PE 从内存盘加载系统是否比正常的系统多出了什么驱动?

[ 本帖最后由 2010qaqz111 于 2013-3-20 22:50 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2013-3-20 23:16:45 | 显示全部楼层

回复 #5274 2010qaqz111 的帖子

这样差不多了。    没人 把系统装在X:。 最多D:  E: 。
回复

使用道具 举报

发表于 2013-3-21 08:15:15 | 显示全部楼层

回复 #5274 2010qaqz111 的帖子

REGI $HKLM\SYSTEM\CurrentControlSet\Control\SystemStartOptions,&&SSO
SED &&MNT=?:0,MININT,,%&SSO%
FIND $%&MNT%=0,MESS NOT IN PE!MESS IN PE
回复

使用道具 举报

 楼主| 发表于 2013-3-21 09:42:18 | 显示全部楼层
原帖由 spadek 于 2013-3-21 08:15 发表
REGI $HKLM\SYSTEM\CurrentControlSet\Control\SystemStartOptions,&&SSO
SED &&MNT=?:0,MININT,,%&SSO%
FIND $%&MNT%=0,MESS NOT IN PE!MESS IN PE

这个好!  PE 有 MININT 启动标志

[ 本帖最后由 mdyblog 于 2013-3-21 09:43 编辑 ]
回复

使用道具 举报

发表于 2013-3-21 10:35:42 | 显示全部楼层
SET  ::WM_LBUTTONDOWN=0x0201  WM_LBUTTONDOWN是什么消息,怎么定义的
回复

使用道具 举报

 楼主| 发表于 2013-3-21 10:47:09 | 显示全部楼层
原帖由 2011hwo1 于 2013-3-21 10:35 发表
SET  ::WM_LBUTTONDOWN=0x0201  WM_LBUTTONDOWN是什么消息,怎么定义的


这些 是 MS 定义的消息 。一般以WM_开头。用来和系统融为一体。 参见 包内 示例\WM_消息.WCS

也可以是其它应用程序自定义的消息。

PECMD 用户定义消息用#1 #2 #3 。。。 等

要知道 WM_LBUTTONDOWN 怎么用, 查 百度 或MSDN 。
如WM_LBUTTONDOWN :   http://baike.baidu.com/view/1514116.htm

[ 本帖最后由 mdyblog 于 2013-3-21 11:11 编辑 ]
回复

使用道具 举报

发表于 2013-3-21 10:54:56 | 显示全部楼层
原帖由 mdyblog 于 2013-3-21 10:47 发表


这些 是 MS 定义的消息 。一般以WM_开头。用来和系统融为一体。 参见 WM消息.WCS

也可以是其它应用程序自定义的消息。

PECMD 用户定义消息用#1 #2 #3 。。。 等

要知道 WM_LBUTTONDOWN 怎么用, ...

英文不懂啊,还是中文好,能用中文说明下窗口的各种消息的数值吗
回复

使用道具 举报

 楼主| 发表于 2013-3-21 10:58:50 | 显示全部楼层
原帖由 2011hwo1 于 2013-3-21 10:54 发表
英文不懂啊,还是中文好,能用中文说明下窗口的各种消息的数值吗

如WM_LBUTTONDOWN :   
http://baike.baidu.com/view/1514116.htm
WM_消息.WCS:
// Window Messages
// 详细帮助:
http://social.msdn.microsoft.com/Search/zh-CN?query=WM_LBUTTONDOWN&ac=4
//            http://baike.baidu.com/view/1514116.htm

数值 包内  示例\WM_消息.WCS  中有, 再百度=>百科。
百科 是中文 的 。
Snap1.gif


[ 本帖最后由 mdyblog 于 2013-3-21 11:10 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2013-3-22 02:31:55 | 显示全部楼层
原帖由 clonecd 于 2013-3-22 00:57 发表
最新版,下拉框,文件拖放的话,会添加一式两份清单上去。

这个问题应该从2月24日的版本就开始了,或者更早。

要么是拖放为两份,要么就是用ADD1添加为两份。

已修正。
回复

使用道具 举报

发表于 2013-3-22 07:48:30 | 显示全部楼层
ENVI @this.MSG=#1::&&wp,&&lp,命令
请问命令在什么情况下运行?
回复

使用道具 举报

 楼主| 发表于 2013-3-22 09:06:11 | 显示全部楼层
原帖由 2011hwo1 于 2013-3-22 07:48 发表
ENVI @this.MSG=#1::&&wp,&&lp,命令
请问命令在什么情况下运行?

在你需要的时候 用下面的命令之一触发:
ENVI @this.POSTMSG=#1,wp数值,lp数值
ENVI @this.SENDMSG=#1,wp数值,lp数值

参见帮助 : HELP 消息  


ENVI @窗口1.POSTMSG=#1,1,2             //触发#1消息  
ENVI @窗口1.POSTMSG=#1                   //触发#1消息  
ENVI @this.POSTMSG=#1,1,2             //触发#1消息  
ENVI @this.SENDMSG=#1,1,2             //触发#1消息

[ 本帖最后由 mdyblog 于 2013-3-22 10:09 编辑 ]
回复

使用道具 举报

发表于 2013-3-22 09:24:48 | 显示全部楼层
原帖由 mdyblog 于 2013-3-22 09:06 发表

子啊你需要的时候 用下面的命令之一触发:
ENVI @this.POSTMSG=#1,wp数值,lp数值
ENVI @this.SENDMSG=#1,wp数值,lp数值

参见帮助 : HELP 消息  


ENVI @窗口1.POSTMSG=#1,1,2             //触发 ...

明白了,好像另类的call+_sub
回复

使用道具 举报

发表于 2013-3-22 11:30:05 | 显示全部楼层
time命令能不能增加删除定时器控件参数
如:time time1 就删除名称为time1的定时器
或者允许后一个同名的定时器替代前一个同名的定时器
回复

使用道具 举报

 楼主| 发表于 2013-3-22 11:47:15 | 显示全部楼层
原帖由 2011hwo1 于 2013-3-22 11:30 发表
time命令能不能增加删除定时器控件参数
如:time time1 就删除名称为time1的定时器
或者允许后一个同名的定时器替代前一个同名的定时器


有什么用啊?

1. 要实现不同的功能, 一般 是在其实现函数中, 根据不同的标志执行部同的代码。一般不允许修改响应命令;否则脚本逻辑不好控制,很容易跑飞,不知道实际响应什么!!!!
SET &&fun1=1  //在窗口中定义成本窗口私有。
TIME &timer1,0, CALL * OnTimer1
_SUB OnTimer1
IFEX $1=%&fun1%,
{*
     .....
     EXIT _SUB
}
IFEX $2=%&fun1%,
{*
  .....
  EXIT _SUB
}
_END

2 。 简单,定义几个定时器, 需要哪个 就启动哪个。

TIME &timer1,0, CALL * OnTimer1
TIME &timer2,0, CALL * OnTimer2
TIME &timer3,0, CALL * OnTimer3


// 出问题了【Service 。。。。】。 刷新后,多出下面几楼。 今年出现好几次 【Service 】问题了,坛子不稳定哦。
//怎么不能删除呢?

[ 本帖最后由 mdyblog 于 2013-3-22 11:51 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2013-3-22 11:47:24 | 显示全部楼层
原帖由 2011hwo1 于 2013-3-22 11:30 发表
time命令能不能增加删除定时器控件参数
如:time time1 就删除名称为time1的定时器
或者允许后一个同名的定时器替代前一个同名的定时器


有什么用啊?

1. 要实现不同的功能, 一般 是在其实现函数中, 根据不同的标志执行部同的代码。一般不允许修改响应命令;否则脚本逻辑不好控制,很容易跑飞,不知道实际响应什么!!!!
SET &&fun1=1  //在窗口中定义成本窗口私有。
TIME &timer1,0, CALL * OnTimer1
_SUB OnTimer1
IFEX $1=%&fun1%,
{*
     .....
     EXIT _SUB
}
IFEX $2=%&fun1%,
{*
  .....
  EXIT _SUB
}
_END

2 。 简单,定义几个定时器, 需要哪个 就启动哪个。

TIME &timer1,0, CALL * OnTimer1
TIME &timer2,0, CALL * OnTimer2
TIME &timer3,0, CALL * OnTimer3
回复

使用道具 举报

 楼主| 发表于 2013-3-22 11:47:54 | 显示全部楼层
原帖由 2011hwo1 于 2013-3-22 11:30 发表
time命令能不能增加删除定时器控件参数
如:time time1 就删除名称为time1的定时器
或者允许后一个同名的定时器替代前一个同名的定时器


有什么用啊?

1. 要实现不同的功能, 一般 是在其实现函数中, 根据不同的标志执行部同的代码。一般不允许修改响应命令;否则脚本逻辑不好控制,很容易跑飞,不知道实际响应什么!!!!
SET &&fun1=1  //在窗口中定义成本窗口私有。
TIME &timer1,0, CALL * OnTimer1
_SUB OnTimer1
IFEX $1=%&fun1%,
{*
     .....
     EXIT _SUB
}
IFEX $2=%&fun1%,
{*
  .....
  EXIT _SUB
}
_END

2 。 简单,定义几个定时器, 需要哪个 就启动哪个。

TIME &timer1,0, CALL * OnTimer1
TIME &timer2,0, CALL * OnTimer2
TIME &timer3,0, CALL * OnTimer3
回复

使用道具 举报

发表于 2013-3-22 12:46:13 | 显示全部楼层
原帖由 mdyblog 于 2013-3-22 11:47 发表


有什么用啊?

1. 要实现不同的功能, 一般 是在其实现函数中, 根据不同的标志执行部同的代码。一般不允许修改响应命令;否则脚本逻辑不好控制,很容易跑飞,不知道实际响应什么!!!!
SET &&fun1=1 ...

主要是用在动态添加定时器,如果当前有的定时器是永远不会被使用的定时器就可以删除掉,然后添加同名的定时器,或者被后面同名的定时器替换掉
回复

使用道具 举报

 楼主| 发表于 2013-3-22 12:56:53 | 显示全部楼层

回复 #5291 2011hwo1 的帖子

感觉弊大于利。 用的时候也不多,也可用用正规的方法实现。
回复

使用道具 举报

 楼主| 发表于 2013-3-22 13:57:16 | 显示全部楼层
原帖由 2011hwo1 于 2013-3-22 12:46 发表

主要是用在动态添加定时器,如果当前有的定时器是永远不会被使用的定时器就可以删除掉,然后添加同名的定时器,或者被后面同名的定时器替换掉


1. 动态添加定时器 是可以的。 删除就不必要了。 停掉就可以了。 TIME  定时器 其实 就是一个数值而已, 不占用系统资源。
   一个窗口所有TIME 定时器 其实 就是一个 定时器 WM_TIMER, 软件通过 该数值来判断 哪个TIME 定时器的。 没有单独删除一说的,或者说停掉就是删除。

再次利用时, 直接设置一个有效的定时就可以。
   定时器的名字就用一个数组。记住数组长度就可以了。
   TIME &Timer[1],2000, CALL OnTimer  1
   TIME &Timer[2],2000, CALL OnTimer  2
   SET &TMS=2  //2个

2. 可变定时器.WCS:
WIN1
_SUB WIN1,W289H249,可变定时器PECMD%PECMDVER%,
    SET &DoTimer1=CALL OnTimer1A
    TIME &Timer1,2000, %&DoTimer1%  &Timer1  //命令用一个变量
_END
_SUB  OnTimer1A
    SET DoTimer1=CALL OnTimer1B  //函数改为 OnTimer1B
    MESS  In OnTimer1A #OK *900
_END

_SUB  OnTimer1B
    SET DoTimer1= CALL OnTimer1A  //函数改为 OnTimer1A  
    MESS  In OnTimer1B #OK *900
_END
  




[ 本帖最后由 mdyblog 于 2013-3-22 14:01 编辑 ]
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-10 11:58

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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