无忧启动论坛

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

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

    [复制链接]
14911#
发表于 2019-12-28 23:26:38 | 只看该作者

测试.7z (477 Bytes, 下载次数: 0)

  1.     ENVI &SrcINI=%&CurDir%\A.INI
  2.     ENVI &SrcINICode=
  3.     ENVI &SrcINICodeHex=
  4.     GETF %&SrcINI%,0#3,&SrcINICodeHex
  5.     FIND $%&SrcINICodeHex%=0xEF 0xBB 0xBF,
  6.     {*
  7.         ENVI &SrcINICode=*UTF8
  8.     }!  
  9.     {*
  10.         ENVI &SrcINICodeHex=
  11.         GETF %&SrcINI%,0#2,&SrcINICodeHex
  12.         FIND $%&SrcINICodeHex%=0xEF 0xBC,
  13.         {*
  14.             ENVI &SrcINICode=*UTF8
  15.         }!  
  16.         {   //注意这里没有*
  17.             IFEX [ '%&SrcINICodeHex%'='0xFF 0xFE' | '%&SrcINICodeHex%'='0x1B 0xFF' ],
  18.             {*
  19.                 ENVI &SrcINICode=*UNI
  20.             }!  
  21.             {*
  22.                 IFEX [ '%&SrcINICodeHex%'='0xFE 0xFF' | '%&SrcINICodeHex%'='0xFF 0x1B' ],
  23.                 {*
  24.                     ENVI &SrcINICode=*UNIB
  25.                 }!  
  26.                 {*
  27.                     ENVI &SrcINICode=*ANSI
  28.                 }
  29.             }
  30.         }
  31.     }
  32.     MESS. <%&SrcINICode%><%&SrcINICodeHex%>
复制代码
有的地方没有*,但是还是会返回变量到上级。FIND和IFEX嵌套的{}本来就是本机变量不用加*么?

点评

ENVI &&V= SET &V= 才有这个说法。当前 级别上。 ENVI &V= SET V= 没有 级别限制。 有则用之,无则新建(新建的都是在本级)  详情 回复 发表于 2019-12-28 23:46
回复

使用道具 举报

14912#
 楼主| 发表于 2019-12-28 23:46:37 | 只看该作者
红毛樱木 发表于 2019-12-28 23:26
有的地方没有*,但是还是会返回变量到上级。FIND和IFEX嵌套的{}本来就是本机变量不用加*么?

ENVI  &&V=
SET  &V=
才有这个说法。当前 级别上。

ENVI  &V=
SET   V=
没有 级别限制。  有则用之,无则新建(新建的都是在本级)

点评

老大看下这里,好像规则不一样了。  详情 回复 发表于 2019-12-29 00:01
_SUB _END 内,不管内部套用多少{}都是直接用的啊,我每次都搞{*} 晕了。  详情 回复 发表于 2019-12-28 23:58
回复

使用道具 举报

14913#
发表于 2019-12-28 23:58:33 | 只看该作者
mdyblog 发表于 2019-12-28 23:46
ENVI  &&V=
SET  &V=
才有这个说法。当前 级别上。

_SUB
_END
内,不管内部套用多少{}都是直接用的啊,我每次都搞{*}

晕了。
回复

使用道具 举报

14914#
发表于 2019-12-29 00:01:47 | 只看该作者
mdyblog 发表于 2019-12-28 23:46
ENVI  &&V=
SET  &V=
才有这个说法。当前 级别上。
  1. CALL ABC &D
  2. MESS. %&D%
  3. CALL ABC1 &D
  4. MESS. %&D%
  5. _SUB ABC
  6.     IFEX $1=1,
  7.     {
  8.         ENVI-ret %1=2
  9.     }
  10. _END

  11. _SUB ABC1
  12.     IFEX $1=1,
  13.     {*
  14.         ENVI-ret %1=2
  15.     }
  16. _END
复制代码

老大看下这里,好像规则不一样了。

点评

{* 和{ 对 ENVI-ret 有影响。 要用到ENVI-ret,则他的上级都要用 {*,否则没有拆到调用者。  详情 回复 发表于 2019-12-29 00:10
回复

使用道具 举报

14915#
 楼主| 发表于 2019-12-29 00:10:04 | 只看该作者
本帖最后由 mdyblog 于 2019-12-29 00:37 编辑
红毛樱木 发表于 2019-12-29 00:01
老大看下这里,好像规则不一样了。

{*
和{

ENVI-ret
有影响。
要用到ENVI-ret,则他的上级都要用 {*,否则没有拆到调用者。

但是, 都用 {*比较难。

一般 给返回的变量先定义一个量, 后随便{,{*
最后,  直接 把这个变量的值  ENVI-ret 出去
_SUB  FFF
   SET &retv=
  {  ...
     {  SET retv=123
     }
  }
  ENVI-ret  %~1=%&retv%
_END
FFF   &&V1
MESS.  %&V1%

点评

哦,这个技巧在那个 PECMD补充说明.doc 文件里好像没有,也加进去吧。  详情 回复 发表于 2019-12-29 00:29
回复

使用道具 举报

14916#
发表于 2019-12-29 00:29:31 | 只看该作者

哦,这个技巧在那个
PECMD补充说明.doc
文件里好像没有,也加进去吧。
回复

使用道具 举报

14917#
发表于 2019-12-29 16:24:33 | 只看该作者
请教一下,如何在窗口内用LABE实现斜线的效果?比如一个45°的线段

点评

示例代码里有个画布演示,搜 画布 两个字就有了,还带动画  详情 回复 发表于 2019-12-29 19:19
回复

使用道具 举报

14918#
 楼主| 发表于 2019-12-29 18:44:16 | 只看该作者
caocaofff 发表于 2019-12-29 16:24
请教一下,如何在窗口内用LABE实现斜线的效果?比如一个45°的线段
  1. #code=936
  2. IFEX X.LOG, LOGS * X.LOG
  3. ENVI^ FORCELOCAL=1
  4. ENVI^ EnviMode=1
  5. //ENVI^ ALIAS *opt Rectangle=CALL $**qd#  **ret:* Gdi32.dll,Rectangle,*dummy,
  6. //ENVI^ ALIAS *opt Ellipse=CALL $**qd#  **ret:* Gdi32.dll,Ellipse,*dummy,
  7. ENVI^ ALIAS *opt Polyline=CALL $**qd#  **ret:* Gdi32.dll,Polyline,*dummy,


  8. WIN1
  9. _SUB WIN1,W260H320,画布演示,
  10.     Envi @this.Paint=OnPaint     
  11.     ENVI @this.POS=?&&左名:&&上名:::L0:T0
  12.     ITEM &ITEM1,L100T250W60H30,OK, MESS  OK
  13.     SET[        DISCUZ_CODE_3        ]nbsp; &Pt= 0x0064 0x0000     0x00000 0x0000     0x0000 0x0000    0x0064 0x0000   *200 0   //曲线buf   2个点(100,0)--(0,100)
  14.     //          -----X1-----     ------Y1------     ------X2-----    ------Y2-----
  15.     //SET-long Pt=100      //x1
  16.     //SET-long Pt=0:4      //y1
  17.     //SET-long Pt=0:8      //x2
  18.     //SET-long Pt=100:12   //y2
  19.     ENVI-addr  &&PtAdr=&Pt  //返回内存地址,字节长度
  20. _END
  21. _SUB OnPaint
  22.     Polyline %1,%&PtAdr%,2
  23. _END
复制代码
画布演示-画线.wcs.zip (748 Bytes, 下载次数: 2)




点评

很不错的示例,谢谢  详情 回复 发表于 2019-12-29 20:45
回复

使用道具 举报

14919#
发表于 2019-12-29 19:19:26 来自手机 | 只看该作者
caocaofff 发表于 2019-12-29 16:24
请教一下,如何在窗口内用LABE实现斜线的效果?比如一个45°的线段

示例代码里有个画布演示,搜 画布  两个字就有了,还带动画
回复

使用道具 举报

14920#
发表于 2019-12-29 20:45:04 | 只看该作者

很不错的示例,谢谢
回复

使用道具 举报

14921#
发表于 2019-12-30 18:49:44 | 只看该作者




BUG截图。代码私聊你了。M大看下

点评

含 空字符的程序路径名 要用引号。  详情 回复 发表于 2019-12-31 01:33
回复

使用道具 举报

14922#
 楼主| 发表于 2019-12-31 01:33:28 | 只看该作者
红毛樱木 发表于 2019-12-30 18:49
BUG截图。代码私聊你了。M大看下

含 空字符的程序路径名 要用引号。

点评

主要是我记得说明里提到过,看起来连续的就不用加""。 看来还是保险点都加上""吧。  详情 回复 发表于 2019-12-31 01:36
回复

使用道具 举报

14923#
发表于 2019-12-31 01:36:31 | 只看该作者
mdyblog 发表于 2019-12-31 01:33
含 空字符的程序路径名 要用引号。

主要是我记得说明里提到过,看起来连续的就不用加""。
看来还是保险点都加上""吧。

点评

那是对EXE等 2进制文的。 BAT/CMD/JS/.../WCS/INI 等 脚本 , 都需要系统在解释, 变量解开 传给系统, 就出现空格。 系统就 可能搞错。  详情 回复 发表于 2019-12-31 01:45
回复

使用道具 举报

14924#
 楼主| 发表于 2019-12-31 01:45:37 | 只看该作者
本帖最后由 mdyblog 于 2019-12-31 01:50 编辑
红毛樱木 发表于 2019-12-31 01:36
主要是我记得说明里提到过,看起来连续的就不用加""。
看来还是保险点都加上""吧。

那是对EXE等 2进制文的。


BAT/CMD/JS/.../WCS/INI    等 脚本 , 都需要系统在解释,
变量解开 传给系统, 就出现空格。
系统就   可能搞错。


我有看了下程序。
还是加上 “”的好。
2进制 ,PECMD虽然知道, 但是还是要交给系统来出来。 系统可能搞错。


点评

遇到一个情况 EXEC -wd:"**" 改成 EXEC -wd:** 后 不能运行的情况。。。。 这里-wd:"**"的双引号看来也是要的呀?  详情 回复 发表于 2019-12-31 12:54
帮助文档里也备注一下吧  详情 回复 发表于 2019-12-31 02:07
明白了。  详情 回复 发表于 2019-12-31 01:48
回复

使用道具 举报

14925#
发表于 2019-12-31 01:48:33 | 只看该作者
mdyblog 发表于 2019-12-31 01:45
那是对EXE等 2进制文的。

明白了。
回复

使用道具 举报

14926#
发表于 2019-12-31 02:07:08 来自手机 | 只看该作者
mdyblog 发表于 2019-12-31 01:45
那是对EXE等 2进制文的。



帮助文档里也备注一下吧
回复

使用道具 举报

14927#
发表于 2019-12-31 12:54:40 | 只看该作者
本帖最后由 红毛樱木 于 2019-12-31 13:01 编辑
mdyblog 发表于 2019-12-31 01:45
那是对EXE等 2进制文的。

遇到一个情况
EXEC -wd:"**"
改成
EXEC -wd:**

不能运行的情况。。。。
这里-wd:"**"的双引号看来也是要的呀?


UsmQemu.7z (2.54 MB, 下载次数: 4)

点评

EXEC -wd:** -pid:&&QemuPid -waiti -hide "%&CurDir%\qemu.fun" -L . -m 512 -localtime -vga std -snapshot -hda %&&b% -boot c //不行 ---------------------- %&CurDir%\qemu.fun 非标准后缀,系统不知道怎  详情 回复 发表于 2019-12-31 16:03
-wd:后面是 PECMD处理的。 不会设计系统字符串处理。 只要形式上没有与空格即可。 而且 ** 是为参数。 只是告诉PECMD, 你自己区算实际的目录吧。 只要形式上没有与空格即可: 纯PECMD处理的部分 (1)  详情 回复 发表于 2019-12-31 16:00
回复

使用道具 举报

14928#
 楼主| 发表于 2019-12-31 16:00:14 | 只看该作者
红毛樱木 发表于 2019-12-31 12:54
遇到一个情况
EXEC -wd:"**"
改成

-wd:后面是 PECMD处理的。 不会设计系统字符串处理。

只要形式上没有与空格即可。

而且 ** 是为参数。 只是告诉PECMD, 你自己区算实际的目录吧。

只要形式上没有与空格即可:
纯PECMD处理的部分
(1) LOAD 文件及起其参数  
(2) 函数参数
(3) -wd:后的参数
(4) -exe:后的参数


特别地:
EXEC  -exe:%&CurDir%\S\FF.EXE    %&CurDir%\S\FF.EXE   AA BB CC
这个 %&CurDir%\S\FF.EXE 肯定能起来, 不受空格影响。
-exe:%&CurDir%\S\FF.EXE  其主要作用。而-exe:不受空格影响。

但是, 参数表可能不确定。
%&CurDir%\FF.EXE   AA BB CC
可能解开:
%&CurDir%\FF.EXE   AA BB CC
D:\data\OneDrive - ag.oldsky.sch.id\103.205.6.81\wwwusbruncom\up.usbrun.com\specialtest\FF.EXE   AA BB CC


参数表很可能为:
- ag.oldsky.sch.id\103.205.6.81\wwwusbruncom\up.usbrun.com\specialtest\FF.EXE   AA BB CC


没有-exe:
则整个表达式的第一部分 作为 执行"程序"或脚本。后面为参数表。

回复

使用道具 举报

14929#
 楼主| 发表于 2019-12-31 16:03:05 | 只看该作者
红毛樱木 发表于 2019-12-31 12:54
遇到一个情况
EXEC -wd:"**"
改成

EXEC -wd:** -pid:&&QemuPid -waiti -hide "%&CurDir%\qemu.fun" -L . -m 512 -localtime -vga std -snapshot -hda %&&b% -boot c   //不行
----------------------
%&CurDir%\qemu.fun 非标准后缀,系统不知道怎么运行
需要指定 -exe:
EXEC -wd:**  -exe:%&CurDir%\qemu.fun   -pid:&&QemuPid -waiti -hide "%&CurDir%\qemu.fun" -L . -m 512 -localtime -vga std -snapshot -hda %&&b% -boot c


点评

这里 EXEC -wd:** -exe:%&CurDir%\qemu.fun -pid:&&QemuPid -waiti -hide "%&CurDir%\qemu.fun" -L . -m 512 -localtime -vga std -snapshot -hda %&&b% -boot c 应该只要一个吧?两个好像不能运行了。 EXEC -  详情 回复 发表于 2019-12-31 17:02
-exe:%&CurDir%\qemu.fun 这里要不要引号,要不要写成 -exe:"%&CurDir%\qemu.fun"  详情 回复 发表于 2019-12-31 16:38
不过 -wd:"**" 又能运行起来,诡异。  详情 回复 发表于 2019-12-31 16:21
知道了。  详情 回复 发表于 2019-12-31 16:18
回复

使用道具 举报

14930#
发表于 2019-12-31 16:18:25 | 只看该作者
mdyblog 发表于 2019-12-31 16:03
EXEC -wd:** -pid:&&QemuPid -waiti -hide "%&CurDir%\qemu.fun" -L . -m 512 -localtime -vga std -snap ...

知道了。
回复

使用道具 举报

14931#
发表于 2019-12-31 16:21:12 | 只看该作者
mdyblog 发表于 2019-12-31 16:03
EXEC -wd:** -pid:&&QemuPid -waiti -hide "%&CurDir%\qemu.fun" -L . -m 512 -localtime -vga std -snap ...

不过
-wd:"**"
又能运行起来,诡异。
回复

使用道具 举报

14932#
发表于 2019-12-31 16:38:58 | 只看该作者
mdyblog 发表于 2019-12-31 16:03
EXEC -wd:** -pid:&&QemuPid -waiti -hide "%&CurDir%\qemu.fun" -L . -m 512 -localtime -vga std -snap ...

-exe:%&CurDir%\qemu.fun
这里要不要引号,要不要写成
-exe:"%&CurDir%\qemu.fun"

点评

-exe:"%&CurDir%\qemu.fun" ----------------- 都可以的。  详情 回复 发表于 2019-12-31 16:49
回复

使用道具 举报

14933#
 楼主| 发表于 2019-12-31 16:49:19 | 只看该作者
本帖最后由 mdyblog 于 2019-12-31 16:50 编辑
红毛樱木 发表于 2019-12-31 16:38
-exe:%&CurDir%\qemu.fun
这里要不要引号,要不要写成
-exe:"%&CurDir%\qemu.fun"

-exe:"%&CurDir%\qemu.fun"
-----------------
都可以的。
对于实际的文件名, 一般加上"" (只好)没坏事。


回复

使用道具 举报

14934#
发表于 2019-12-31 17:02:09 | 只看该作者
mdyblog 发表于 2019-12-31 16:03
EXEC -wd:** -pid:&&QemuPid -waiti -hide "%&CurDir%\qemu.fun" -L . -m 512 -localtime -vga std -snap ...

这里
EXEC -wd:**  -exe:%&CurDir%\qemu.fun   -pid:&&QemuPid -waiti -hide "%&CurDir%\qemu.fun" -L . -m 512 -localtime -vga std -snapshot -hda %&&b% -boot c
应该只要一个吧?两个好像不能运行了。
EXEC -wd:**  -exe:"%&CurDir%\qemu.fun"  -pid:&&QemuPid -waiti -hide  -L . -m 512 -localtime -vga std -snapshot -hda %&&b% -boot c
回复

使用道具 举报

14935#
发表于 2019-12-31 17:18:01 | 只看该作者
又试出来一个情况。
EXEC* -wd:"**" -pid:&&QemuPid -hide -exe:"%&CurDir%\qemu.fun" -err+ &a="%&CurDir%\qemu.fun" -L . -m 512 -localtime -vga std -snapshot -hda %&&b% -boot c    //这个行
EXEC* -wd:** -pid:&&QemuPid -hide -exe:"%&CurDir%\qemu.fun" -err+ &a="%&CurDir%\qemu.fun" -L . -m 512 -localtime -vga std -snapshot -hda %&&b% -boot c    //这个不行
MESS.  %&a%

点评

好像逻辑问题哦。 试试  详情 回复 发表于 2019-12-31 21:18
EXEC* -wd:** -pid:&&QemuPid -hide -exe:"%&CurDir%\qemu.fun" -err+ &a=abcdefg -L . -m 512 -localtime -vga std -snapshot -hda %&&b% -boot c 红色部分随便写  详情 回复 发表于 2019-12-31 18:28
回复

使用道具 举报

14936#
发表于 2019-12-31 18:28:57 | 只看该作者
红毛樱木 发表于 2019-12-31 17:18
又试出来一个情况。
EXEC* -wd:"**" -pid:&&QemuPid -hide -exe:"%&CurDir%\qemu.fun" -err+ &a="%&CurDir ...

EXEC* -wd:** -pid:&&QemuPid -hide -exe:"%&CurDir%\qemu.fun" -err+ &a=abcdefg -L . -m 512 -localtime -vga std -snapshot -hda %&&b% -boot c

红色部分随便写

点评

用 -wd:"*"和-wd:"**" 都能达到预期的效果。 就是-wd:**不行  详情 回复 发表于 2019-12-31 18:51
你试下前面我给的附件测试。 不是实际效果,-wd:**不起作用,要-wd:"**"才行。红色部分随便写也不行。  详情 回复 发表于 2019-12-31 18:49
回复

使用道具 举报

14937#
发表于 2019-12-31 18:49:49 | 只看该作者
527104427 发表于 2019-12-31 18:28
EXEC* -wd:** -pid:&&QemuPid -hide -exe:"%&CurDir%\qemu.fun" -err+ &a=abcdefg -L . -m 512 -localtim ...

你试下前面我给的附件测试。
不是实际效果,-wd:**不起作用,要-wd:"**"才行。红色部分随便写也不行。
回复

使用道具 举报

14938#
发表于 2019-12-31 18:51:57 | 只看该作者
本帖最后由 红毛樱木 于 2019-12-31 19:00 编辑
527104427 发表于 2019-12-31 18:28
EXEC* -wd:** -pid:&&QemuPid -hide -exe:"%&CurDir%\qemu.fun" -err+ &a=abcdefg -L . -m 512 -localtim ...


-wd:"*"和-wd:"**"
都能达到预期的效果。
-wd:*和-wd:**都不行,即使目录都没有空格。
回复

使用道具 举报

14939#
 楼主| 发表于 2019-12-31 21:18:18 | 只看该作者
红毛樱木 发表于 2019-12-31 17:18
又试出来一个情况。
EXEC* -wd:"**" -pid:&&QemuPid -hide -exe:"%&CurDir%\qemu.fun" -err+ &a="%&CurDir ...

好像逻辑问题哦。

试试(简化下)
EXEC* -wd:%&CurDir%  -pid:&&QemuPid -hide -exe:%&CurDir%\qemu.fun  -err+ &a=qemu.fun   -L . -m 512 -localtime -vga std -snapshot -hda %&&b% -boot c



点评

EXEC* -wd:%&CurDir% -pid:&&QemuPid -hide -exe:"%&CurDir%\qemu.fun" -err+ &a="%&CurDir%\qemu.fun" -L . -m 512 -localtime -vga std -snapshot -hda %&&b% -boot c 这样也行  详情 回复 发表于 2019-12-31 21:41
这样行。  详情 回复 发表于 2019-12-31 21:35
回复

使用道具 举报

14940#
发表于 2019-12-31 21:35:00 | 只看该作者
mdyblog 发表于 2019-12-31 21:18
好像逻辑问题哦。

试试(简化下)

这样行。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-17 05:01

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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