无忧启动论坛

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

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

    [复制链接]
4561#
 楼主| 发表于 2013-3-2 23:44:44 | 只看该作者
原帖由 2010qaqz111 于 2013-3-2 23:29 发表
明白了,谢谢!
再问一个技术问题,IFEX/FIND 后面如果条件真假的两个分支都有很多语句的话,除了 TEAM 嵌在一行里面写完可以拆成多行吗?
大括号可以拆行,但是在说明里没有看到可以跟ELSE部分的语法 ...

IFEX/FIND 后面如果条件真假的两个分支都有很多语句的话.,得写成2个IFEX/FIND
(1)
IFEX/FIND  条件, ENVI  &&cont1=1!  ENVI  &&cont1=0
FIND $1=%&cont1%,   //TRUE部分
{
...
...
}

FIND $0=%&cont1%, //FALSE部分
{
...
...
}

(2)
只有ELSE部分用!
IFEX/FIND 条件, !   //FALSE部分
{
...
...
}


(3)
简单可以用TEAM(命令组1中不能有!)
IFEX/FIND 条件, TEAM 命令组1!  TEAM 命令组2
如:
FIND $1=1, TEAM MESS a1|MESS a2! TEAM  MESS b1| MESS b2

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

使用道具 举报

4562#
发表于 2013-3-2 23:51:58 | 只看该作者
是的看来得写成2个部分了,只是习惯问题感觉有点别扭~_~不过貌似问题也不大
回复

使用道具 举报

4563#
 楼主| 发表于 2013-3-3 00:59:39 | 只看该作者
原帖由 2010qaqz111 于 2013-3-2 23:51 发表
是的看来得写成2个部分了,只是习惯问题感觉有点别扭~_~不过貌似问题也不大


PECMD2012.1.73.1-130301-4.多窗口线程孵化版_win32_64.sfx.zip
IFEX/FIND 可接双代码块.
IFEX/FIND  条件,  //不能带!                                    
{ ....多行代码    //条件真部分                                   
}!

{ ....多行代码    //条件假部分。    !紧挨},!后面可若干空字符,再接{
}                                                               

如:
FIND $1=1,
{
MESS  A-111
}!
{
MESS  A-222
}
FIND $0=1,
{
MESS  B-111
}!
{
MESS  B-222
}
回复

使用道具 举报

4564#
发表于 2013-3-3 03:07:41 | 只看该作者
原帖由 mdyblog 于 2013-3-3 00:59 发表
IFEX/FIND  条件,  //不能带!
{ ....多行代码    //条件真部分                                   
}!
{ ....多行代码    //条件假部分。    !紧挨},!后面可若干空字符,再接{
}


实际测试了下好像ELSE部分的块必须写上,即使不处理任何事都必须写

[ 本帖最后由 2010qaqz111 于 2013-3-3 03:30 编辑 ]
回复

使用道具 举报

4565#
 楼主| 发表于 2013-3-3 08:55:56 | 只看该作者
原帖由 2010qaqz111 于 2013-3-3 03:07 发表


实际测试了下好像ELSE部分的块必须写上,即使不处理任何事都必须写

PECMD2012.1.73.1-130301-5.多窗口线程孵化版_win32_64.sfx.zip



FIND $0=1,
{
   MESS  C-false
}
MESS FFFF--1
FIND $1=1,
{
   MESS  C-true
}

FIND $1=1,
{
MESS  A-TRUE
}!  /// ELSE
///
#
;
`
{
MESS  A-FALSE
}
FIND $0=1,
{
MESS  B-TRUE
}!  /// ELSE
///
#
;
`
{
MESS  B-FALSE
}


//////////////////////////
}!  后面可以接 / ; ` #  '  " 开始的注释行, 方便说明

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

使用道具 举报

4566#
 楼主| 发表于 2013-3-3 09:32:52 | 只看该作者
原帖由 clonecd 于 2013-3-3 08:59 发表
ENVI @this.MSG=_#4: CALL @*kkHELP

ENVI @-.POSTMSG=#4;3;0


请问红色的两个数字代表什么意思?

我查过HELP0.TXT,也没查到说明。


┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃    │命令│'消息映射'                                                                                  ┃
┃    ├──┼──────────────────────────────────────────────┨
┃    │参数│■ENVI @窗口和控件名.MSG=[_$*]消息号:[:[wPrm参数名],[lPrm参数名],]执行命令//定义消息映射捕捉┃
┃    │    │  默认前部命令;_为后部命令;$为替代命令,不执行系统响应,此时能返回结果码;*用于捕鼠器B命令。┃
┃    │    │  “执行命令”以-号开始,则从所在窗口开始执行(执行栈)。                                   ┃
┃    │    │■ENVI @窗口和控件名.POSTMSG=[:变量名;]消息号[;参数wPrm[;参数lPrm]]     //异步发送消息      ┃
┃    │    │■ENVI @窗口和控件名.SENDMSG=[:变量名;]消息号[;参数wPrm[;参数lPrm]]     //同步发送消息      ┃
┃    │    │■ENVI @@POSTMSG=[:变量名;]窗口号;消息号[;参数wPrm[;参数lPrm]]     //异步发送消息           ┃
┃    │    │■ENVI @@SENDMSG=[:变量名;]窗口号;消息号[;参数wPrm[;参数lPrm]]     //同步发送消息           ┃


消息的参数。
消息可以带两个参数, 依次叫wParam lParwm。 省略自动填0.
接受方能收到这2个参数。PECMD 自动填入上面的 wPrm参数名,lPrm参数名
方便传递跟多信息。

ENVI @-.POSTMSG=#4;3;0
参数依次为3 和 0

参数是数字(含指针,句柄,数组下标等)。
指针一般就不要用了,程序很容易崩溃(传递一个错误的指针)。

指针用来传递一PE对象的地址,可以发送更多信息,可以接收信息。

ENVI-addr 可以提取对象的地址。
这样可以发送字符串。
PECMD中可以定义一字符串数组, 发送编号,这样安全不会崩溃。(只能用于本程序)
ENVI &strmsgparam[1]=abcdefg

ENVI @-.POSTMSG=#4;1  //发送字符串1#
接收方 :
ENVI~  &&msg=&strmsgparam[%wPrm参数名%]



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

使用道具 举报

4567#
发表于 2013-3-3 11:12:58 | 只看该作者
原帖由 mdyblog 于 2013-3-3 08:55 发表

PECMD2012.1.73.1-130301-5.多窗口线程孵化版_win32_64.sfx.zip


FIND $0=1,
{
   MESS  C-false
}
MESS FFFF--1
FIND $1=1,
{
   MESS  C-true
}


条件真假的格式怎么是一样的?

条件假的部分是恢复了
FIND $0=1,!
{
MESS C-false
}

这样的格式吧?

另外,这种写法
IFEX $1=1,!!
{
MESS TrueNoFalseBlock
}

还可以用吗?

IFEX $1=1,!!
{
MESS TrueNoFalseBlock
}!
{
MESS Block2
}

这样的代码 Block2 的部分执行不到,这是怎么解释的呢?直接忽略了 !! 吗?

[ 本帖最后由 2010qaqz111 于 2013-3-3 11:49 编辑 ]
回复

使用道具 举报

4568#
 楼主| 发表于 2013-3-3 11:53:14 | 只看该作者
原帖由 2010qaqz111 于 2013-3-3 11:12 发表


条件真假的格式怎么是一样的?

条件假的部分是恢复了
FIND $0=1,!
{
MESS C-false
}

这样的格式吧?

另外,这种写法
IFEX $1=1,!!
{
MESS TrueNoFalseBlock
}

还可以用吗?

IFEX $1 ...


可以。
只是说 IFEX/FIND双代码块 时, 【IFEX/FIND  条件,】 后不要接任何!


// 这样的代码 Block2 的部分执行不到,这是怎么解释的呢?直接忽略了 !! 吗?
A: 不要这样写, 有一个标准的写法够了

按照设计 【条件,】 后接任何!,均表示只有一部分(单行), !!就是为此设计的,使得单行命令中可以直接使用!。


算了改了吧。

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

使用道具 举报

4569#
发表于 2013-3-3 12:01:07 | 只看该作者
能不能写个命令来实现时间、utc、gmt互相转换
回复

使用道具 举报

4570#
发表于 2013-3-3 12:01:50 | 只看该作者
如果写定时器功能需要用到 时间、utc、gmt互相转换
回复

使用道具 举报

4571#
发表于 2013-3-3 12:02:22 | 只看该作者
原帖由 <i>mdyblog</i> 于 2013-3-3 11:53 发表 <a href="http://bbs.wuyou.net/redirect.php?goto=findpost&pid=2690803&ptid=205402" target="_blank"><img src="http://bbs.wuyou.net/images/common/back.gif" border="0" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" onmousewheel="return imgzoom(this);" alt="" /></a><br />

<br />

<br />
可以。 <br />
只是说 IFEX/FIND双代码块 时, 【IFEX/FIND  条件,】 后不要接任何!<br />
<br />
<br />
// 这样的代码 Block2 的部分执行不到,这是怎么解释的呢?直接忽略了 !! 吗?<br />
A: 不要这样写, 有一个标准的写法够了<br />
...


了解了,谢谢!
回复

使用道具 举报

4572#
 楼主| 发表于 2013-3-3 12:06:37 | 只看该作者
原帖由 2011hwo1 于 2013-3-3 12:01 发表
能不能写个命令来实现时间、utc、gmt互相转换


时间转换.WCS 不够吗?
回复

使用道具 举报

4573#
发表于 2013-3-3 12:10:24 | 只看该作者
不够啊, 时间到gmt  和gmt到时间都是需要的
回复

使用道具 举报

4574#
发表于 2013-3-3 12:25:48 | 只看该作者
date 变量名和SITE ?-local [创建时间变量][,写时变量][,访问时变量]=FTIME,文件名获得的时间格式应该统一
2008-8-8|5|20:8:8还是改成2008 08 08 20 08 08 微秒 这样的格式比较好,要取时间的任何部分都很方便
回复

使用道具 举报

4575#
发表于 2013-3-3 13:01:58 | 只看该作者
关于文件时间,也许可以在取文件时间的时候在最后增加一个结果,返回是当年的第几个周,这样方便标记工作文件的日程。

一年有51或52个完整的周,但是可以一头一尾可以被截断半边,所以一年始终是53个周,有一个或者两个不完整周,以日历所在第一行为一年第一个周(即使不完整)。

如果一个周跨年了,在上年的部分是上年最后一周(第53周),在下年的部分是下年第1周。

这个规则应该算是比较通用的,只是计算的时候得考虑闰月的问题。


这个是以周一为一周第一天的算法:

int Y=year,M=month,D=day,W=weekday; //SITE FTIME返回的响应部分
int Dcount;

if(0==W)W=7; //PECMD返回的周日是0

switch M{ //C语言利用switch穿透累加年第几天的计数
case 12: Dcount+=30;
case 11: Dcount+=31;
case 10: Dcount+=30;
case 9: Dcount+=31;
case 8: Dcount+=31;
case 7: Dcount+=30;
case 6: Dcount+=31;
case 5: Dcount+=30;
case 4: Dcount+=31;
case 3: Dcount+=(0==(Y%4))?29:28;
case 2: Dcount+=31;
}
Dcount+=D; //本月已经过了D天

if(W>=Dcount)return 1; //第一周
Dcount-=W; //减掉本周已经过去的W天
D1=Dcount%7; //一年第一个不完整周有D1天
Dcount/=7; //完整周个数
Dcount++; //减掉的当前周
if(0!=D1)Dcount++; //一年开头第一个不完整周
return Dcount;

[ 本帖最后由 2010qaqz111 于 2013-3-3 13:12 编辑 ]
回复

使用道具 举报

4576#
发表于 2013-3-3 14:00:13 | 只看该作者
帮助信息这个地方出问题了:

┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃    │命令│'SEND'                                                                                      ┃
┃    ├──┼──────────────────────────────────────────────┨
┃    │格式│SEND <按键代码1[_|^]>[;按键代码2][;按键代码3]...  //支持逗号分号空字符分隔                  ┃
┃    ├──┼────────────────────?ぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉ?
┃    │功能│模拟按键。                                                                                  ┃
┃    ├──┼──────────────────────────────────────────────┨
回复

使用道具 举报

4577#
 楼主| 发表于 2013-3-3 15:15:39 | 只看该作者
原帖由 2010qaqz111 于 2013-3-3 14:00 发表
帮助信息这个地方出问题了:

┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃    │命令│'SEND'                                    ...

曾经看到过, 后来找了好久都没找到这行。 文档太大了。
回复

使用道具 举报

4578#
 楼主| 发表于 2013-3-3 15:37:06 | 只看该作者
原帖由 clonecd 于 2013-3-3 12:27 发表
老师,请测试一下在属性页中的表格,获取表格全部数据,类似如下指令是否能正常运行? 谢谢。

ENVI @HDMH:szTABL.Val=?*,*;&AllData

不是 【ENVI @HDMH:szTABL.Val=?*,*;&AllData】

而是 【ENVI @HDMH:szTABL.Val=?*.*;&AllData】
红色部分是小数点
回复

使用道具 举报

4579#
发表于 2013-3-3 16:04:37 | 只看该作者
SET WM_DROPFILES=0x0233
EDIT * Edit1,L16T334W482H20,将 VHDX 文件拖入或双击此处选择 VHDX 文件,OnEdit1_DblClick,0x108,0xFF0000#0xFFFFFF,14:**B
ENVI @Edit1.MSG=%WM_DROPFILES%:MESS CheckTargetVHDXFile


在完整的Win8中这个注册的WM_DROPFILES消息有点问题:

以User身份直接运行没有问题,以User提升到Admin权限运行就没反应,直接以Admin用户登录Windows运行也没有问题。

[ 本帖最后由 2010qaqz111 于 2013-3-3 16:17 编辑 ]
回复

使用道具 举报

4580#
 楼主| 发表于 2013-3-3 16:35:18 | 只看该作者
原帖由 2010qaqz111 于 2013-3-3 13:01 发表
关于文件时间,也许可以在取文件时间的时候在最后增加一个结果,返回是当年的第几个周,这样方便标记工作文件的日程。

一年有51或52个完整的周,但是可以一头一尾可以被截断半边,所以一年始终是53个周,有一 ...


PECMD2012.1.73.1-130301-6.多窗口线程孵化版_win32_64.sfx.zip

1 RECY 完成
感谢老九的指点。

2 DATE 加强
支持转换, 支持周数
┃    ├──┼──────────────────────────────────────────────┨
┃    │格式│DATE [*space] [*bsys] [*utc:UTC时间] [*gmt:GMT时间] [*local:LOCAL时间] [*sys:国际时间]      ┃
┃    │    │                                                                      [变量名]  [子项]      ┃
┃    ├──┼──────────────────────────────────────────────┨
┃    │功能│返回系统当前日期和时间                                                                      ┃
┃    ├──┼──────────────────────────────────────────────┨
┃    │    │*space输出空格间隔;*bsys 输出国际时间;其它为时间转换而不是取当前时间。                    ┃
┃    │参数│■变量名: 用于保存系统当前日期和时间的变量名称。默认为CurDate。                             ┃
┃    │    │■子项:   y Mon d w h min s ms ws分别指 年 月 日 星期 时 分 秒 毫秒 (周数)。也可直接用    ┃
┃    │    │          年 月 日 星期 时 分 秒 毫秒 。否则为全部。子项gmt为GMT秒数(1970.1.1开始),    ┃
┃    │    │          uptime为开机毫秒数,utc为UTC时间,以100纳秒为单位,从1601.1.1计时。               ┃

子项ds为年内第几天,可用“天”。

输入 国际时间 LOCAL时间 时, 可以用一对引号(双或单,不能混搭)。含空格是必须。
各子项间一个任意非数字字符间隔(含空字符)。


utc->gmt
DATE  *utc:130067709575316623  &tm gmt

utc->local时间
DATE *utc:130067709575316623 &tm


utc->国际时间
DATE *bsys *utc:130067709575316623 &tm


DATE *local:"2013 3 3 0 13 46 0 624" &t  utc
DATE *local:"2013 3 3 0 13 46 0 624" &t  gmt

DATE *sys:"2013 3 3 0 13 46 0 624" &t utc
DATE *sys:"2013 3 3 0 13 46 0 624" &t gmt

3  SITE 周数
SITE ?[-local] [-ws] [创时变量][,写时变量][,访时变量]=FTIME,文件名  ※查询文件时间

-ws则后面加一年的第几周

3 FORX  条件,!   或 !!
{
}
自动禁止双条件块。

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

使用道具 举报

4581#
 楼主| 发表于 2013-3-3 16:38:30 | 只看该作者
原帖由 2010qaqz111 于 2013-3-3 16:04 发表
SET WM_DROPFILES=0x0233
EDIT * Edit1,L16T334W482H20,将 VHDX 文件拖入或双击此处选择 VHDX 文件,OnEdit1_DblClick,0x108,0xFF0000#0xFFFFFF,14:**B
ENVI @Edit1.MSG=%WM_DROPFILES%:MESS CheckTargetVHDXF ...

》》以User提升到Admin权限运行就没反应
你是怎么具体操作的?

注意文件权限。

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

使用道具 举报

4582#
发表于 2013-3-3 17:09:41 | 只看该作者
原帖由 mdyblog 于 2013-3-3 16:38 发表

》》以User提升到Admin权限运行就没反应
你是怎么具体操作的?

注意文件权限。
  1. _SUB WIN1,W300H200
  2. PART list disk ,&DSKS
  3. SET WM_DROPFILES=0x0233
  4. EDIT * Edit1,L10T10W275H140,%DSKS%,,0x108
  5. ENVI @Edit1.MSG=%WM_DROPFILES%:MESS DROP
  6. _END
  7. WIN1
复制代码
这个代码存成 z1.wcs,跟 pecmd.exe 放在一个目录下。

z1.wcs 和 pecmd.exe 都加了 everyone 完全控制权限。
用windows的右键拖放做了个pecmd.exe的快捷方式,在快捷方式的参数里加上了 z1.wcs

以User权限直接运行快捷方式,编辑框是空的,拖入文件会弹出消息框;
右键快捷方式选“以管理员身份运行”,输入框列出磁盘编号,拖入文件没有消息框弹出。

[ 本帖最后由 2010qaqz111 于 2013-3-3 17:11 编辑 ]
回复

使用道具 举报

4583#
发表于 2013-3-3 18:10:57 | 只看该作者
原帖由 mdyblog 于 2013-3-3 16:35 发表


PECMD2012.1.73.1-130301-6.多窗口线程孵化版_win32_64.sfx.zip

1 RECY 完成了
感谢老九的指点。

2 DATE 加强
支持转换, 支持周数
┃    ├──┼─────────────────────── ...

date *space 变量  返回的变量格式能使用2位的月日时分秒吗
回复

使用道具 举报

4584#
 楼主| 发表于 2013-3-3 18:12:10 | 只看该作者
原帖由 2010qaqz111 于 2013-3-3 17:09 发表
_SUB WIN1,W300H200
PART list disk ,&DSKS
SET WM_DROPFILES=0x0233
EDIT * Edit1,L10T10W275H140,%DSKS%,,0x108
ENVI @Edit1.MSG=%WM_DROPFILES%:MESS DROP
_END
WIN1这个代码存成 z1.wcs,跟 pecmd.ex ...


UAC 的原因。
你测程序运行在安全桌面上。
关闭UAC试试。
UserAccountControlSettings.exe

需要重启 生效。
回复

使用道具 举报

4585#
 楼主| 发表于 2013-3-3 18:13:32 | 只看该作者
原帖由 2011hwo1 于 2013-3-3 18:10 发表

date *space 变量  返回的变量格式能使用2位的月日时分秒吗

3月用03 吗?
回复

使用道具 举报

4586#
发表于 2013-3-3 18:19:24 | 只看该作者
3月用03 跟site获得的文件时间差不多
回复

使用道具 举报

4587#
发表于 2013-3-3 18:29:31 | 只看该作者
原帖由 mdyblog 于 2013-3-3 18:12 发表


UAC 的原因。
你测程序运行在安全桌面上。
关闭UAC试试。
UserAccountControlSettings.exe
157349
需要重启 生效。

前面的测试就是在UAC关闭的情况。

另外,那个算周数的,如果是1月1日算出来是第0周,这个能不能调整成1为基数啊,非计算机领域很少有用第0周这样的说法的。
回复

使用道具 举报

4588#
 楼主| 发表于 2013-3-3 18:34:23 | 只看该作者
原帖由 2010qaqz111 于 2013-3-3 17:09 发表
_SUB WIN1,W300H200
PART list disk ,&DSKS
SET WM_DROPFILES=0x0233
EDIT * Edit1,L10T10W275H140,%DSKS%,,0x108
ENVI @Edit1.MSG=%WM_DROPFILES%:MESS DROP
_END
WIN1这个代码存成 z1.wcs,跟 pecmd.ex ...


还是UAC 的隔离, 不在一个桌上,不能通信。

从VISTA->WINDOWS7 UAC(用户帐户控制)出现到至今,拖放文件一直存在一个问题:
“以管理员身份运行”的任何程序,均不能正常接受拖放进窗口中的文件!


MS 的  记事本 等都是这样。


关掉 UAC 省事。一了百了。
回复

使用道具 举报

4589#
 楼主| 发表于 2013-3-3 18:39:01 | 只看该作者
原帖由 2010qaqz111 于 2013-3-3 18:29 发表

前面的测试就是在UAC关闭的情况。

另外,那个算周数的,如果是1月1日算出来是第0周,这个能不能调整成1为基数啊,非计算机领域很少有用第0周这样的说法的。



UAC关闭 后, 重启过没有? 重启才能生效。
回复

使用道具 举报

4590#
发表于 2013-3-3 18:44:38 | 只看该作者
UAC一直是关着的,不存在重启的问题,不过我反复改了UAC又重启了两次之后仍然如此,看来这UAC是灭不干净了。

算了不是PECMD的问题就没事了,反正除了拖放还有其他解决方式。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-6-27 01:29

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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