无忧启动论坛

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

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

    [复制链接]
18571#
发表于 2023-5-27 21:04:57 | 只看该作者
本帖最后由 泮安宁 于 2023-5-27 21:12 编辑

为什么开启多线程给labe设置文字就不行了呢
  1. WIN1
  2. _SUB WIN1,W580H330
  3.       ENVI &&n=1
  4.       ENVI &&T=10
  5.       TIME -t:1 T,0,LOOP #%&&n%<=5,TEAM CALL page1|CALC &n=%&n%+1|WAIT 0.9999
  6.       CALL set
  7. _END
  8. _SUB page1
  9.       LABE -left -w &LABE%&n%,L10T%&T%W550H60,,,
  10.       CALC &T=%&T%+70
  11. _END
  12. _SUB set
  13.       ENVI$ &NL=0d 0a
  14.       ENVI &a=1111111%&NL%222222222222%&NL%3333333333333333%&NL%44444444444444444%&NL%55555555555555
  15.       ENVI &sn=1
  16.         FORX *NL &a,&&b,
  17.       {*
  18.             THREAD*$ CALL ccc %&&b%
  19.             CALC &sn=%&sn%+1
  20.       }
  21. _END
  22. _SUB ccc *
  23.       //MESS aaa
  24.       ENVI @&LABE%&sn%=%1
  25. _END
复制代码
取消注释MESS aaa就可以给labe设置这个有办法解决吗

点评

你这个实际先执行了CALL set了,逻辑不对了吧。 改成:  详情 回复 发表于 2023-5-27 23:34
回复

使用道具 举报

18572#
发表于 2023-5-27 23:34:25 | 只看该作者
泮安宁 发表于 2023-5-27 21:04
为什么开启多线程给labe设置文字就不行了呢
取消注释MESS aaa就可以给labe设置了 ...

你这个实际先执行了CALL set了,逻辑不对了吧。
改成:
  1. CALL @WIN1
  2. _SUB WIN1,W580H330
  3.       ENVI &&n=1
  4.       ENVI &&T=10
  5.       TIME -t:1 T,0,TEAM? LOOP #%&&n%<=5,TEAM CALL * page1| CALC &n=%&n%+1| WAIT 0.9999? CALL set
  6.       //CALL set
  7. _END
  8. _SUB page1 *
  9.       LABE -left -w &LABE%&n%,L10T%&T%W550H60,,,
  10.       CALC &T=%&T%+70
  11. _END
  12. _SUB set
  13.       ENVI$ &NL=0d 0a
  14.       ENVI &a=1111111%&NL%222222222222%&NL%3333333333333333%&NL%44444444444444444%&NL%55555555555555
  15.       ENVI &sn=1
  16.         FORX *NL &a,&&b,
  17.       {*
  18.             THREAD*$ CALL ccc %&&b%
  19.             CALC &sn=%&sn%+1
  20.       }
  21. _END
  22. _SUB ccc *
  23.       //MESS aaa
  24.       ENVI @&LABE%&sn%=%1
  25. _END
复制代码

点评

谢谢可以了,TEAM后的问号啥意思,我看了一下帮助也没找到说明  详情 回复 发表于 2023-5-28 10:29
回复

使用道具 举报

18573#
发表于 2023-5-28 10:29:59 | 只看该作者
红毛樱木 发表于 2023-5-27 23:34
你这个实际先执行了CALL set了,逻辑不对了吧。
改成:

谢谢可以了,TEAM后的问号啥意思,我看了一下帮助也没找到说明

点评

TEAM[^#~+-@$%*?/\;,."'  详情 回复 发表于 2023-5-29 14:41
回复

使用道具 举报

18574#
发表于 2023-5-29 14:41:56 | 只看该作者
泮安宁 发表于 2023-5-28 10:29
谢谢可以了,TEAM后的问号啥意思,我看了一下帮助也没找到说明

TEAM[^#~+-@$%*?/\;,."'<]

^#~+-为|的替代定界词。 <为反向
------------------------
这里的?是|的替代定界词。
------------------------
也可以
※TEAM 嵌套: 最外层用 | 分断。里面一层用 || 分断。再里面一层用 ||| 分断。。。
TEAM LOOP #%&&n%<=5,TEAM CALL * page1|| CALC &n=%&n%+1|| WAIT 0.9999| CALL set
-------------------------

点评

明白了,我一直都是用的|嵌套的那种方式  详情 回复 发表于 2023-5-29 17:26
回复

使用道具 举报

18575#
发表于 2023-5-29 17:26:09 | 只看该作者

明白了,我一直都是用的|嵌套的那种方式
回复

使用道具 举报

18576#
发表于 2023-6-4 16:55:29 | 只看该作者
EXEC的管道模式怎么用
EXEC|  !a.exe  | !=b.exe > c.txt
可以把b.exe的输出保存到文件,怎么能直接保存到变量呢

点评

※EXEC*[[数字^$]|N|-] NAME= 表示将程序的标准输出存入指定变量NAME中,强制为等待方式。  详情 回复 发表于 2023-6-4 20:19
回复

使用道具 举报

18577#
发表于 2023-6-4 20:19:02 | 只看该作者
泮安宁 发表于 2023-6-4 16:55
EXEC的管道模式怎么用
EXEC|  !a.exe  | !=b.exe > c.txt
可以把b.exe的输出保存到文件,怎么能直接保存 ...

※EXEC*[[数字^$]|N|-] NAME= 表示将程序的标准输出存入指定变量NAME中,强制为等待方式。

点评

┃ │ │EXEC| =!ipconfig > ip.txt ┃ │ │EXEC| =*ipconfig | =%Myname% TEAM READ --,**,V|| MESS. [%%V%%] //先ENVI^ EnviMode=1 ┃ │ │EXEC| !cmd  详情 回复 发表于 2024-5-21 19:35
不行的,我试过了 EXEC*| !a.exe | &a=!b.exe 这样不行,是写错了还是不支持  详情 回复 发表于 2023-6-4 21:09
回复

使用道具 举报

18578#
发表于 2023-6-4 21:09:22 | 只看该作者
本帖最后由 泮安宁 于 2023-6-4 21:31 编辑
红毛樱木 发表于 2023-6-4 20:19
※EXEC*[[数字^$]|N|-] NAME= 表示将程序的标准输出存入指定变量NAME中,强制为等待方式。

不行的,我试过了
EXEC*|  !a.exe  | &a=!b.exe
这样不行,是写错了还是不支持
Tutorial (jqlang.github.io)上面一个例子
curl -k "https://api.github.com/repos/jqlang/jq/commits?per_page=5" | jq "."

点评

你这是啥写法,批处理么。。。那么多|和! 也没有EXEC*|的写法  详情 回复 发表于 2023-6-5 18:52
谁说不行? exec*| -hide a=*curl -k "https://api.github.com/repos/jqlang/jq/commits?per_page=5" | jq "." [attachimg]527594[/attachimg] jq.exe有3.36m,用PECMD命令也能实现啊,何必呢?  详情 回复 发表于 2023-6-4 22:24
回复

使用道具 举报

18579#
发表于 2023-6-4 22:24:58 | 只看该作者
泮安宁 发表于 2023-6-4 21:09
不行的,我试过了
EXEC*|  !a.exe  | &a=!b.exe
这样不行,是写错了还是不支持


谁说不行?

exec*| -hide a=*curl -k "https://api.github.com/repos/jqlang/jq/commits?per_page=5" | jq "."






jq.exe有3.36m,用PECMD命令也能实现啊,何必呢?

set^ EnviMode=1
set^ ForceLocal=1
exec* -hide b=*curl -k "https://api.github.com/repos/jqlang/jq/commits?per_page=5"
read -*,*r,b,b
mess. [%b%]



点评

b=*curl 这里的*好像无意义吧?  详情 回复 发表于 2023-6-5 18:51
咱们两个写的不一样啊,所以说是我写错了啊,变量放错了位置 谢谢指点  详情 回复 发表于 2023-6-4 22:50
回复

使用道具 举报

18580#
发表于 2023-6-4 22:50:51 | 只看该作者
489432757 发表于 2023-6-4 22:24
谁说不行?

exec*| -hide a=*curl -k "https://api.github.com/repos/jqlang/jq/commits?per_page=5 ...

咱们两个写的不一样啊,所以说是我写错了啊,变量放错了位置
谢谢指点
回复

使用道具 举报

18581#
发表于 2023-6-5 17:28:03 | 只看该作者
6
回复

使用道具 举报

18582#
发表于 2023-6-5 17:28:16 | 只看该作者
6
回复

使用道具 举报

18583#
发表于 2023-6-5 17:28:38 | 只看该作者
6
回复

使用道具 举报

18584#
发表于 2023-6-5 18:51:54 | 只看该作者
489432757 发表于 2023-6-4 22:24
谁说不行?

exec*| -hide a=*curl -k "https://api.github.com/repos/jqlang/jq/commits?per_page=5 ...

b=*curl
这里的*好像无意义吧?

点评

-hide 隐藏 jq.exe * 隐藏 curl.exe 只运行一个控制台程序无所谓 -hide 还是 *  详情 回复 发表于 2023-6-5 19:53
回复

使用道具 举报

18585#
发表于 2023-6-5 18:52:44 | 只看该作者
泮安宁 发表于 2023-6-4 21:09
不行的,我试过了
EXEC*|  !a.exe  | &a=!b.exe
这样不行,是写错了还是不支持

你这是啥写法,批处理么。。。那么多|和!
也没有EXEC*|的写法
回复

使用道具 举报

18586#
发表于 2023-6-5 19:53:41 | 只看该作者
红毛樱木 发表于 2023-6-5 18:51
b=*curl
这里的*好像无意义吧?

-hide 隐藏 jq.exe
* 隐藏 curl.exe
只运行一个控制台程序无所谓 -hide 还是 *

点评

一般这样子写 EXEC* -wait -hide b=curl xxxxxxxxxxxxxxx  详情 回复 发表于 2023-6-5 20:05
回复

使用道具 举报

18587#
发表于 2023-6-5 20:05:02 | 只看该作者
489432757 发表于 2023-6-5 19:53
-hide 隐藏 jq.exe
* 隐藏 curl.exe
只运行一个控制台程序无所谓 -hide 还是 *

一般这样子写
EXEC* -wait -hide b=curl xxxxxxxxxxxxxxx

点评

就是pecmd啊 试了,这样是可以的 EXEC*| &c=!a.exe | !b.exe  详情 回复 发表于 2023-6-5 20:53
回复

使用道具 举报

18588#
发表于 2023-6-5 20:53:08 | 只看该作者
本帖最后由 泮安宁 于 2023-6-5 20:58 编辑
红毛樱木 发表于 2023-6-5 20:05
一般这样子写
EXEC* -wait -hide b=curl xxxxxxxxxxxxxxx

就是pecmd啊
试了,这样是可以的
EXEC*|  &c=!a.exe  | !b.exe
MESS %&c%

点评

你这里后面的 | !b.exe 是给程序a.exe的参数吗?  详情 回复 发表于 2023-6-5 23:10
回复

使用道具 举报

18589#
发表于 2023-6-5 21:39:18 来自手机 | 只看该作者
本帖最后由 conlin888 于 2023-6-5 21:43 编辑

没见过这么奇怪的用法,一般都是exec* &v=*xxx.exe 参数表 或者 exec* -raw &ⅴ=*xxx.exe 参数表,后者要用code命令转成uni编码。
exec*是捕获管道输出,命令表又用"丨"管道命令,很弄易出错。一般是捕获全部数据,再用sed或lpos查找特定字符。

点评

个人认为: EXEC* -hide &v=xxx.exe 这种比较标准一些。 另外这种捕获应该加上-err+比较稳妥。 EXEC* -hide -err+ &v="d:\xxx.exe"  详情 回复 发表于 2023-6-5 23:09
回复

使用道具 举报

18590#
发表于 2023-6-5 23:09:23 | 只看该作者
conlin888 发表于 2023-6-5 21:39
没见过这么奇怪的用法,一般都是exec* &v=*xxx.exe 参数表 或者 exec* -raw &ⅴ=*xxx.exe 参数表,后者要用 ...

个人认为:
EXEC* -hide &v=xxx.exe
这种比较标准一些。
另外这种捕获应该加上-err+比较稳妥。
EXEC* -hide -err+ &v="d:\xxx.exe"

点评

不错,你的写法比较规范! 我只是习惯了, exec =*xxx.exe 或 exec =@xxx.exe  详情 回复 发表于 2023-6-6 09:31
回复

使用道具 举报

18591#
发表于 2023-6-5 23:10:06 | 只看该作者
泮安宁 发表于 2023-6-5 20:53
就是pecmd啊
试了,这样是可以的
EXEC*|  &c=!a.exe  | !b.exe

你这里后面的
| !b.exe
是给程序a.exe的参数吗?

点评

不是,管道模式,a.exe的输出作为b.exe的输入  详情 回复 发表于 2023-6-5 23:13
回复

使用道具 举报

18592#
发表于 2023-6-5 23:13:18 | 只看该作者
红毛樱木 发表于 2023-6-5 23:10
你这里后面的
| !b.exe
是给程序a.exe的参数吗?

不是,管道模式,a.exe的输出作为b.exe的输入

点评

EXEC*| &c=!a.exe | !b.exe --------------------- 不应该写成这样子才对吗? EXEC* -hide -err+ &c=a.exe ^EXEC -wait -hide b.exe %&c% --------------------- 仅个人观点  详情 回复 发表于 2023-6-5 23:17
回复

使用道具 举报

18593#
发表于 2023-6-5 23:17:50 | 只看该作者
泮安宁 发表于 2023-6-5 23:13
不是,管道模式,a.exe的输出作为b.exe的输入

EXEC*|  &c=!a.exe  | !b.exe
---------------------
不应该写成这样子才对吗?
EXEC* -hide -err+ &c=a.exe
^EXEC -wait -hide b.exe %&c%
---------------------
仅个人观点

点评

上面提到的jq.exe是解析json的程序,它后面的参数好像不能跟你写的这种把json内容保存在变量中的形式,我试过像你这样这,没成功(不知道是不是因为我哪里操作不对),后边参数只能跟本地文件路径,要么就用管道,官方  详情 回复 发表于 2023-6-5 23:36
回复

使用道具 举报

18594#
发表于 2023-6-5 23:36:52 | 只看该作者
本帖最后由 泮安宁 于 2023-6-5 23:38 编辑
红毛樱木 发表于 2023-6-5 23:17
EXEC*|  &c=!a.exe  | !b.exe
---------------------
不应该写成这样子才对吗?

上面提到的jq.exe是解析json的程序,它后面的参数好像不能跟你写的这种把json内容保存在变量中的形式(a.exe返回的内容就是json内容),我试过像你这样写,没成功(不知道是不是因为我哪里操作不对),后边参数只能跟本地文件路径,要么就用管道,官方给的示例也是用的管道传递的
上边有链接你可以下载jq.exe试一下
回复

使用道具 举报

18595#
发表于 2023-6-6 09:27:45 | 只看该作者
本帖最后由 conlin888 于 2023-6-7 11:04 编辑

楼层18607#的大哥已经给出了标准答案.

exec*| &v=*curl.exe -k "https://api.github.com/repos/jqlang/jq/commits?per_page=5"|=*jq.exe "."

或者用cmd中转一下:

exec* &v=*cmd.exe /c for /f "delims=" %%i in ('call curl.exe -k "https://api.github.com/repos/jqlang/jq/commits?per_page=5"^|jq "."^|find /v /n ""') do @echo %%i

//以下命令为去掉行号
//Team set$ &nl=d a|sed -ex &v=0,^\[\d+\],,&v|sed -ex &v=0,%&nl%\[\d+\],%&nl%,&v|sed -ex &v=0,%&nl%$,,&v






回复

使用道具 举报

18596#
发表于 2023-6-6 09:31:06 | 只看该作者
红毛樱木 发表于 2023-6-5 23:09
个人认为:
EXEC* -hide &v=xxx.exe
这种比较标准一些。

不错,你的写法比较规范!

我只是习惯了, exec =*xxx.exe 或  exec =@xxx.exe
回复

使用道具 举报

18597#
发表于 2023-6-9 18:23:31 | 只看该作者
WIN1
_SUB WIN1,W600H400,,,,,,
      TABS tabs1,L0T0H400W600,sub,0x10
_END
_SUB sub,W600H400,,,,
    ENVI @this.bkcolor=0x000000
_END
TABS状态设置为不可见,但是上面还是会空出原来按钮的位置,有没有办法去掉
另外,子界面的个数可以动态增加吗,类似于LIST的
ENVI @下拉列表框名称.ADDSEL=新增加或选择的条目

点评

你这需求,还不如直接SWIN了  详情 回复 发表于 2023-6-9 19:58
回复

使用道具 举报

18598#
发表于 2023-6-9 19:58:43 | 只看该作者
泮安宁 发表于 2023-6-9 18:23
WIN1
_SUB WIN1,W600H400,,,,,,
      TABS tabs1,L0T0H400W600,sub,0x10

你这需求,还不如直接SWIN了

点评

本来是想用的swin,但是不知道怎么实现类似TABS的切换窗口的功能,大佬来个例子  详情 回复 发表于 2023-6-9 20:23
回复

使用道具 举报

18599#
发表于 2023-6-9 20:23:41 | 只看该作者
红毛樱木 发表于 2023-6-9 19:58
你这需求,还不如直接SWIN了

本来是想用的swin,但是不知道怎么实现类似TABS的切换窗口的功能,大佬来个例子

点评

搞按钮对应显示、隐藏swin  详情 回复 发表于 2023-6-10 02:49
回复

使用道具 举报

18600#
发表于 2023-6-10 02:49:24 来自手机 | 只看该作者
泮安宁 发表于 2023-6-9 20:23
本来是想用的swin,但是不知道怎么实现类似TABS的切换窗口的功能,大佬来个例子

搞按钮对应显示、隐藏swin

点评

这个早就试过不管用才想着用tabs大佬看看我哪里写的不对  详情 回复 发表于 2023-6-10 12:47
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-12-25 13:17

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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