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

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

 荐  火... [复制链接]
发表于 2024-6-5 15:53:06 | 显示全部楼层
本帖最后由 hhh333 于 2024-6-5 16:26 编辑

哈哈,还是不对
原来的2:-2,2:-1结果一样。

经老版本验证,以下结果完全正确
1、SED A=X:Y,代表左起Y+1位替代X次
2、SED A=N,代表左起替代N次
3、SED A=,即为空代表左起首个位替代,相当于SED A=1:0,
4、SED A=0,代替所有

另外,又测试了以下非规则用法
5、SED A=-n,与4结果一样。
6、SED A=X:-Y,相当于第二个为无效数,与以上2相同。
如果不加开关只加负号,即采用-X:Y的形式,在这两个地方会不兼容,但规则以外就没必要兼容了吧?

点评

新版上传了 - 加前面,加后面,都可以。不就是参数提取嘛。 m:n abs(n) 是0 基 起次, 也是 跳过次数。有 0 和 -0,方向不同。 abs(m)是替换次数。-0 和 +0 都表示全部替换。 ENVI^ EnviMode=1 SET$  详情 回复 发表于 2024-6-5 23:36
算了, 不纠结了。 - 加前,加前面都可以。 不就是参数提取嘛。  详情 回复 发表于 2024-6-5 21:56
回复

使用道具 举报

发表于 2024-6-5 16:24:33 | 显示全部楼层
  1. ENVI$# &&a=0x01
  2. CODE *jm  &a,>,1,1
  3. GETF &a,0#*,&b
  4. MESS %&b%
复制代码
右移1位不应该是0吗,为什么是0x80

点评

搞错了,原来是循环右移  详情 回复 发表于 2024-6-5 16:32
回复

使用道具 举报

发表于 2024-6-5 16:32:47 | 显示全部楼层
泮安宁 发表于 2024-6-5 16:24
右移1位不应该是0吗,为什么是0x80

搞错了,原来是循环右移
回复

使用道具 举报

 楼主| 发表于 2024-6-5 21:52:25 | 显示全部楼层
hhh333 发表于 2024-6-5 15:31
为了与前面兼容,以前是X:Y,X代表替换次数,默认为1,Y代表跳过次数,默认为0
在前面加负号,或加一个 ...

很清楚。
就是和 MSTR /LSTR /RPOS 等换了风格。 在次数(长度)上 表示方向
回复

使用道具 举报

 楼主| 发表于 2024-6-5 21:56:36 | 显示全部楼层
本帖最后由 mdyblog 于 2024-6-5 22:02 编辑
hhh333 发表于 2024-6-5 15:53
哈哈,还是不对
原来的2:-2,2:-1结果一样。

算了, 不纠结了。 - 加前面,加后面,都可以。不就是参数提取嘛。
m:n

abs(n) 是0 基 起次, 也是 跳过次数。有 0 和 -0
abs(m)是替换次数。-0 和 +0 都表示全部替换。  
回复

使用道具 举报

 楼主| 发表于 2024-6-5 23:36:54 | 显示全部楼层
hhh333 发表于 2024-6-5 15:53
哈哈,还是不对
原来的2:-2,2:-1结果一样。

新版上传了
- 加前面,加后面,都可以。不就是参数提取嘛。
m:n

abs(n) 是0 基 起次, 也是 跳过次数。有 0 和 -0,方向不同。
abs(m)是替换次数。-0 和 +0 都表示全部替换。  


ENVI^ EnviMode=1
SET$ &NL=0d 0a
SET &v1=1A11%&NL%2A22%&NL%3A33%&NL%4A44%&NL%55A5
SED &v2=-2:2,%&NL%,-,%&v1%
SED &v3=2:-2,%&NL%,-,%&v1%
MESS.   v1[%&NL%%&v1%]%&NL% v2[%&NL%%&v2%]%&NL% v3[%&NL%%&v3%]
----------------------------
  v1[
1A11
2A22
3A33
4A44
55A5]
v2[
1A112A223A33
4A44
55A5]
v3[
1A112A223A33
4A44
55A5]

点评

还有个BUG,SED &v3=2:-2,%&NL%,-,%&v1%怎么变成了SED &v3=2:-2,%&NL%,,%&v1%  详情 回复 发表于 2024-6-6 09:28
回复

使用道具 举报

 楼主| 发表于 2024-6-6 04:29:24 | 显示全部楼层
826773297 发表于 2024-6-4 21:17
pecmd支持内置一个字体到主程序吗,比如图标字体,某些系统没有图标字体,调用起来就很麻烦要自己转成图 ...

新版 FONT支持 私有字体
FONT  -p[:返回名]  <资源|文件>  //加载 私有字体
FONT -  -p  上次返回值  //主动删除 私有字体 , 一般不需要, 程序结束就自带删除了
资源 和 字体文件   可以 CMPS -m 压缩


1:
FONT   -p:&&f  #1|FONT   //资源
MESS. font:%&f%

或
FONT   -p   #1|FONT   //资源



2:
FONT   -p:&&f  segmdl2.ttf.cmz   //CPMS -m 压缩的字体文件
MESS. font:%&f%

FONT   -p   segmdl2.ttf.cmz   //CPMS -m 压缩的字体文件





3:
FONT  -p    -      %&f%  //主动提前删除


效果:
fff.png

回复

使用道具 举报

发表于 2024-6-6 06:15:35 | 显示全部楼层
mdyblog 发表于 2024-6-6 04:29
新版 FONT支持 私有字体
FONT  -p[:返回名]    //加载 私有字体
FONT -  -p  上次返回值  //主动删除  ...
  1. TEAM set^ EnviMode=1|set^ ForceLocal=1|set &Wide=666|set &High=212|set$ nl=0d 0a
  2. set &::EN_CHANGE=0x0300
  3. set &::WM_KEYDOWN=0x0100
  4. set &::WM_LBUTTONDOWN=0x0201
  5. set &::WM_RBUTTONDOWN=0x0204
  6. set &::WM_LBUTTONDBLCLK=0x0203
  7. set &::WM_MOUSEENTER=0x1000
  8. set &::WM_MOUSELEAVE=0x02A3
  9. set &::WM_DROPFILES=0x0233
  10. set &::WM_SIZE=0x0005
  11. set &::SIZE_MAXSHOW=3
  12. set &::SIZE_MAXIMIZED=2
  13. set &::SIZE_RESTORED=0
  14. set &::CBN_HOVER=0x7001
  15. set &::SB_VERT=1
  16. set &::SIF_POS=0x0004
  17. set &::WM_VSCROLL=0x0115
  18. set &::SB_BOTTOM=7
  19. set &::EM_GETSEL=0x00B0
  20. set &::EM_SETSEL=0x00B1

  21. set &::EM_LINEINDEX=0x00BB
  22. //DPI缩放比
  23. CALL $--ret:&DPI_Aware user32.dll,SetProcessDPIAware
  24. CALL $--ret:&DPI_Aware user32.dll,SetProcessDPIAwareness,#1
  25. set &hdcNUM=0
  26. LOOP #1=1,
  27. {*
  28.         CALL $--ret:&hdc user32.dll,GetDC,#0
  29.         CALC #&hdcNUM=%&hdcNUM%+1
  30.         IFEX $%&hdcNUM%>50, EXIT
  31.         IFEX $%&hdc%>0, EXIT
  32.         WAIT 0.9
  33. }
  34. set &ScaleCMD=-scalef -scale
  35. IFEX $%&hdc%>0,
  36. {*
  37.         CALL $--ret:&LOGPIXELSX Gdi32.dll,GetDeviceCaps,#%&hdc%,#88
  38.         set &ScaleCMD=-scalef:%&LOGPIXELSX% -scale:%&LOGPIXELSX%
  39. }
  40. CALL @WIND
  41. _SUB WIND,W611H422,批处理脚本,team TIPS -|CALL saveSCRIPT %&saveSCR%,%MyName%,,,-disminb %&ScaleCMD%
  42.         CALL setPOS WIN3
  43.         CALL SETtop
  44.         %&Font_Cmd%
  45.         set &saveSCR=
  46.         MEMO+ -3D &EG1,L5T0W521H360,,,
  47.         set n=0
  48.         forx* 隐藏运行 快捷方式 关联右键 自我删除,i,
  49.         {        ^CHEK %i%,L526T%n%W66H18,%i%,call BAT,
  50.                 calc n=%n%+20
  51.         }
  52.         LABE B,L5T362W100H16,空       
  53.         set @&EG1.MSG=0x00BB:set @B=换行   //捕获鼠标进入 事件, 执行命令
  54.                
  55.         LABE -left &BG1,L5T378W80H16,提示:支持拖入,,0xDF0029
  56.         ITEM &IG1,L221T368W50H25,重载,team CALL reloadSCRIPT|MESS=+icon1 刷新成功! @提示#OK*5000
  57.         ITEM &IG2,L271T368W50H25,清空,set @&EG1=,
  58.         ITEM &IG3,L321T368W50H25,浏览,CALL viewWCS,
  59.         ITEM &IG4,L371T368W50H25,新增,team set &saveSCR=B|KILL \,
  60.         ITEM &IG5,L421T368W50H25,保存,team set &saveSCR=A|KILL \,
  61.         ITEM &IG6,L471T368W50H25,取消,KILL \,
  62.         set @this.Visible=1
  63.         WAIT 0.9
  64.         CALL Cursor &IG1 &IG2 &IG3 &IG4 &IG5 &IG6
  65.         CALL reloadBAT
  66.         set @&EG1.MSG=0x0233::&wp,&lp, CALL getBG1 "%&wp%" "%&lp%"
  67.         set @&BG1.MSG=0x1000: CALL Mouse_In 支持拖入
  68.         CALL Mouse_Out &BG1
  69.        
  70. _END

  71. _SUB BAT
  72.         set @&EG1.Val=?a
  73.         find $%隐藏运行.Check%=1,set @&EG1=%a%%nl%%%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
  74.         find $%快捷方式.Check%=1,set @&EG1=%a%%nl%mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(a.SpecialFolders(""Desktop"") & ""\iBAT.lnk""):b.TargetPath=""%~dp0iBAT.exe"":b.WorkingDirectory=""%~dp0"":b.Save:close")
  75.         find $%关联右键.Check%=1,set @&EG1=%a%%nl%for %%%%i in (bat cmd)do (%nl%reg add "HKCR\SystemFileAssociations\.%%%%i\shell\iBAT" /t REG_SZ /d "用iBAT打开" /f%nl%reg add "HKCR\SystemFileAssociations\.%%%%i\shell\iBAT" /v Icon /t REG_SZ /d "%~dp0iBAT.exe" /f%nl%reg add "HKCR\SystemFileAssociations\.%%%%i\shell\iBAT\command" /t REG_SZ /d "%~dp0iBAT.exe "\"%%%%1\" /f%nl%)       
  76.         find $%自我删除.Check%=1,set @&EG1=%a%%nl%(echo for %%%%%%%%i in ^(bat cmd^)do reg delete "HKCR\SystemFileAssociations\.%%%%%%%%i\shell\iBAT" /f%nl%echo taskkill /f /im iBAT.exe /t^&TIMEOUT /T 1 /NOBREAK^&del "%%%%userprofile%%%%\desktop\iBAT.lnk"^&cd..^&rd/s/q "%%%%~dp0")>"%~dp0卸载.bat"
  77. _END

  78. _SUB reloadBAT
  79.         set &noEG1=
  80.         set @&TABLA.Sel=?&SEL
  81.         ifex $%&SEL%>0,
  82.         {*
  83.                 set @&TABLA.Val=?%&SEL%.1;&scriptNAME
  84.                 FEXT &sEXT=%&scriptNAME%
  85.                 FIND $%&sEXT%=,
  86.                 {*
  87.                         set @&BG1=%&scriptNAME%
  88.                         ^set @&EG1=%%%&scriptNAME%%%
  89.                 }!
  90.                 {*
  91.                         set &noEG1=1
  92.                 }
  93.         }!
  94.         {*
  95.                 set &noEG1=1
  96.         }
  97.         ifex $%&noEG1%=1,set @&EG1=@Echo off&SetLocal EnableDelayedExpansion       
  98. _END

  99. _SUB 写入
  100. set 写入=WRIT-ANSI "D:\软件\iBAT\12.bat"
  101. %写入%,1,@echo off&%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
  102. %写入%,2,mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(a.SpecialFolders(""Desktop"") & ""\iBAT.lnk""):b.TargetPath=""%~dp0iBAT.exe"":b.WorkingDirectory=""%~dp0"":b.Save:close")
  103. %写入%,3,for %%i in (bat cmd)do (
  104. %写入%,4,        reg add "HKCR\SystemFileAssociations\.%%i\shell\iBAT" /t REG_SZ /d "用iBAT打开" /f
  105. %写入%,5,        reg add "HKCR\SystemFileAssociations\.%%i\shell\iBAT" /v Icon /t REG_SZ /d "%~dp0iBAT.exe" /f
  106. %写入%,6,        reg add "HKCR\SystemFileAssociations\.%%i\shell\iBAT\command" /t REG_SZ /d "%~dp0iBAT.exe "\"%%1\" /f
  107. %写入%,7,)
  108. _END
复制代码


请教一下 能写个在编辑框指定行 或者获取光标位置 写入指定字符 的示例吗
回复

使用道具 举报

发表于 2024-6-6 08:40:37 | 显示全部楼层
比如按2次回车光标在第二行 点击一个ITEM 就能在光标位置插入预设的代码

点评

示例\Edit位置.wcs 获得光标位置: GetPos EditName PosStart PosEnd 移动动光标 到位置(可选择一段) SetPos EditName PosStart 替换,插入,删除 参见 示例\RichEdit-替换特殊符号.wcs 的 OnI  详情 回复 发表于 2024-6-6 12:52
回复

使用道具 举报

发表于 2024-6-6 09:28:10 | 显示全部楼层
mdyblog 发表于 2024-6-5 23:36
新版上传了
- 加前面,加后面,都可以。不就是参数提取嘛。
m:n

还有个BUG,SED &v3=2:-2,%&NL%,-,%&v1%怎么变成了SED &v3=2:-2,%&NL%,,%&v1%没被“-"代替

点评

忙忘了, 还有替换串。 改了 ENVI^ EnviMode=1 SET$ &NL=0d 0a SET &v1=1A11%&NL%2A22%&NL%3A33%&NL%4A44%&NL%55A5 SED &v2=2:2,%&NL%,-,%&v1% SED &v3=2:-0,%&NL%,-,%&v1% MESS. v1[%&NL%%&v1%]%&NL%%&NL%  详情 回复 发表于 2024-6-6 12:25
回复

使用道具 举报

 楼主| 发表于 2024-6-6 12:25:12 | 显示全部楼层
hhh333 发表于 2024-6-6 09:28
还有个BUG,SED &v3=2:-2,%&NL%,-,%&v1%怎么变成了SED &v3=2:-2,%&NL%,,%&v1%没被“-"代替

忙忘了, 还有替换串。
改了
ENVI^ EnviMode=1
SET$ &NL=0d 0a
SET &v1=1A11%&NL%2A22%&NL%3A33%&NL%4A44%&NL%55A5
SED &v2=2:2,%&NL%,-,%&v1%
SED &v3=2:-0,%&NL%,-,%&v1%
MESS.   v1[%&NL%%&v1%]%&NL%%&NL% v2[%&NL%%&v2%]%&NL%%&NL% v3[%&NL%%&v3%]

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  v1[
1A11
2A22
3A33
4A44
55A5]

v2[
1A11
2A22
3A33-4A44-55A5]

v3[
1A11
2A22
3A33-4A44-55A5]


点评

这次是彻底妥了  详情 回复 发表于 2024-6-6 15:51
回复

使用道具 举报

 楼主| 发表于 2024-6-6 12:52:17 | 显示全部楼层
本帖最后由 mdyblog 于 2024-6-6 12:53 编辑
Zap 发表于 2024-6-6 08:40
比如按2次回车光标在第二行 点击一个ITEM 就能在光标位置插入预设的代码

示例\Edit位置.wcs

获得光标位置:
GetPos  EditName PosStart   PosEnd

移动动光标 到位置(可选择一段)
SetPos  EditName PosStart   [PosEnd]

替换,插入,删除 参见
示例\RichEdit-替换特殊符号.wcs 的 OnInit函数


_SUB SetAt  //   EditName PosStart   PosEnd   "内容"
    SET &d2=%~3
    FIND $%&d2%=, SET &d2=%~2
    ENVI @%~1.SENDMSG=%EM_SETSEL%,%~2,%d&2%
    ENVI @%~1.SENDMSG=%EM_REPLACESEL%,7,$%~4
_END




GetPos  &EG1   &&PosStart   &&PosEnd


//SetPos  &EG1   %&PosStart%   %&PosEnd%


SetAt  &EG1  %&PosStart% ""   "&NewDat"
SetAt  &EG1  1 ""   "&NewDat"
回复

使用道具 举报

发表于 2024-6-6 15:51:16 | 显示全部楼层
本帖最后由 hhh333 于 2024-6-6 16:06 编辑
mdyblog 发表于 2024-6-6 12:25
忙忘了, 还有替换串。
改了
ENVI^ EnviMode=1

这次是彻底妥了
1、SED A=0或-0,  表示代替所有
2、SED A=X:Y,  表示左起Y+1位替代X次;
     SED A=-X:Y,或X:-Y,  表示右起Y+1位替代X次
3、SED A=N,  表示左起替代N次;
     SED A=-N,  表示右起替代N次
4、SED A=,即为空  表示左起首个位替代,相当于SED A=1:0,
     SED A=-,即只有负号  表示右起首个位替代,相当于SED A=-1:0或1:-0




点评

那好  详情 回复 发表于 2024-6-6 18:55
回复

使用道具 举报

发表于 2024-6-6 17:36:37 | 显示全部楼层
mdyblog 发表于 2024-6-6 12:52
示例\Edit位置.wcs

获得光标位置:

谢谢 好使
回复

使用道具 举报

发表于 2024-6-6 18:37:05 | 显示全部楼层
mdyblog 发表于 2024-6-6 12:52
示例\Edit位置.wcs

获得光标位置:

但是新的问题又出现了 如果替换内容中 有:会被吞 不知道怎样转义
例如:mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(a.SpecialFolders(""Desktop"") & ""\iBAT.lnk""):b.TargetPath=""%~dp0iBAT.exe"":b.WorkingDirectory=""%~dp0"":b.Save:close")"
会把:后内容全吞掉 而只有mshta VBScript 我用set代入也一样

点评

???????????????????????  详情 回复 发表于 2024-6-6 19:05
回复

使用道具 举报

发表于 2024-6-6 18:45:18 | 显示全部楼层
mdyblog 发表于 2024-6-6 12:52
示例\Edit位置.wcs

获得光标位置:

/也会被吞

点评

????????????、  详情 回复 发表于 2024-6-6 19:06
回复

使用道具 举报

 楼主| 发表于 2024-6-6 18:55:40 | 显示全部楼层
hhh333 发表于 2024-6-6 15:51
这次是彻底妥了
1、SED A=0或-0,  表示代替所有
2、SED A=X:Y,  表示左起Y+1位替代X次;

那好
回复

使用道具 举报

 楼主| 发表于 2024-6-6 19:05:21 | 显示全部楼层
Zap 发表于 2024-6-6 18:37
但是新的问题又出现了 如果替换内容中 有:会被吞 不知道怎样转义
例如:mshta VBScript:Execute("Set a= ...

???????????????????????
回复

使用道具 举报

 楼主| 发表于 2024-6-6 19:06:35 | 显示全部楼层

????????????、
回复

使用道具 举报

发表于 2024-6-6 19:40:48 | 显示全部楼层
我也没太看懂,怎么被呑
回复

使用道具 举报

发表于 2024-6-6 20:20:47 | 显示全部楼层
本帖最后由 Zap 于 2024-6-7 08:18 编辑
  1. #code=936T950
  2. ENVI^ EnviMode=1
  3. ENVI^ ForceLocal=1
  4. SET$ &NL=0d 0a
  5. SET &EM_GETSEL=0x00B0
  6. SET &EM_SETSEL=0x00B1
  7. SET &EM_REPLACESEL=0x00C2

  8. SET &WM_LBUTTONDOWN=0x0201
  9. SET &WM_LBUTTONUP=0x0202

  10. CALL @Calc_exe

  11. _SUB Calc_exe,W536H628,计算器,
  12.     set &&Top=30
  13.     set &LogInfosShow=Proce
  14.     MEMO-+ -rich &&EC,L15T%&&Top%W460H(480 - %&&Top% - 6 - 4),%&LogInfosShow%,,0x200
  15.     LABE LABE1,L11T516W409H30,,,
  16.     set @this.MSG=+%&WM_LBUTTONDOWN%: OnMouse d
  17.     set @this.MSG=+%&WM_LBUTTONUP%: OnMouse u
  18.     LABE -mod -vcenter -center &&I1,L10T0W60H30,移到3,
  19.     LABE -mod -vcenter -center &&I2,L80T0W60H30,移到7,
  20.     LABE -mod -vcenter -center &&I3,L150T0W60H30,查询,TEAM GetPos &&EC &&v1 &&v2|set @LABE1=位置 %&v1% %&v2%
  21.    
  22.         set n=210
  23.         forx* A B C D,i,team ^LABE -mod &&%i%,L%n%T0W30H30,%i%,GetPos &&EC &&v1 &&v2|calc n=%n%+30
  24.        
  25.    
  26. //  set @this.MSG=#1: OnInit
  27.     set @this.POSTMSG=#1
  28. _END

  29. //保存为UniCode 则可以显示
  30. _SUB OnInit  //显示特殊字符
  31.     set @&&EC.SENDMSG=%EM_SETSEL%,0x71,0x78
  32.     set @&&EC.SENDMSG=%EM_REPLACESEL%,7,$&#174; Core&#8482;   //&#174;&#8482;
  33. _END

  34. _SUB OnMouse
  35.         set @this.Cur=?&&X;&&Y;&&cX;&&cY
  36.         set &a=%%%%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
  37.        
  38.         set &b=mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(a.SpecialFolders(""Desktop"") & ""\iBAT.lnk""):b.TargetPath=""%~dp0iBAT.exe"":b.WorkingDirectory=""%~dp0"":b.Save:close")
  39.        
  40.         set &c=for %%%%%%%%i in (bat cmd)do (%nl%reg add "HKCR\SystemFileAssociations\.%%%%%%%%i\shell\iBAT" /t REG_SZ /d "用iBAT打开" /f%nl%reg add "HKCR\SystemFileAssociations\.%%%%%%%%i\shell\iBAT" /v Icon /t REG_SZ /d "%%%%~dp0iBAT.exe" /f%nl%reg add "HKCR\SystemFileAssociations\.%%%%i\shell\iBAT\command" /t REG_SZ /d "%~dp0iBAT.exe "\"%%%%%%%%1\" /f%nl%)
  41.        
  42.         set &d=(echo for %%%%%%%%i in ^(bat cmd^)do reg delete "HKCR\SystemFileAssociations\.%%%%%%%%i\shell\iBAT\" /f%nl%echo taskkill /f /im iBAT.exe /t^&TIMEOUT /T 1 /NOBREAK^&del "%%%%userprofile%%%%\desktop\iBAT.lnk"^&cd..^&rd/s/q "%%%%~dp0")>"%~dp0卸载.bat"
  43.                
  44.         TryIt  10 0 60 30 %1 TEAM Set_Color &&I1|SetPos &&EC 3 3
  45.         TryIt 80 0 60 30 %1 TEAM Set_Color &&I2|SetPos &&EC 7 27
  46.         TryIt 150 0 60 30 %1 TEAM Set_Color &&I3|GetPos &&EC &&v1 &&v2|set @LABE1=位置 %&v1% %&v2%       
  47.         TryIt 210 0 30 30 %1 TEAM Set_Color &&A|SetAt &&EC %&v1% %&v2% "%&a%"  //编辑名称 位置开始 位置结束 "内容"
  48.         TryIt 240 0 30 30 %1 TEAM Set_Color &&B|SetAt &&EC %&v1% %&v2% "%&b%"
  49.         TryIt 270 0 30 30 %1 TEAM Set_Color &&C|SetAt &&EC %&v1% %&v2% "%&c%"
  50.         TryIt 300 0 30 30 %1 TEAM Set_Color &&D|SetAt &&EC %&v1% %&v2% "%&d%"
  51. _END

  52. _SUB Set_Color
  53.         TEAM set @%~1.bkcolor=0xDF0029|WAIT 20| set @%~1.bkcolor=-1
  54. _END

  55. _SUB TryIt  
  56.         set &&X1=%1
  57.         set &&Y1=%2
  58.         set &&W=%3
  59.         set &&H=%4
  60.         CALC &&X2=%X1% + %W%
  61.         CALC &&Y2=%Y1% + %H%
  62.       MSTR &cmd=<6->%*
  63.         IFEX $%&cX%>%&X1%,!! IFEX $%&cX%<%&X2%,!! IFEX $%&cY%>%&Y1%,!! IFEX $%&cY%<%&Y2%,!! FIND $%5<>d, %&cmd%
  64. _END

  65. // GetPos  EditName PosStart PosEnd
  66. _SUB GetPos
  67.     SET$# &D1=*8 0
  68.     SET$# &D2=*8 0
  69.     set @%1.SENDMSG=%EM_GETSEL%,@&D1,@&D2
  70.     ENVI?long &D1=&&v1
  71.     ENVI?long &D2=&&v2
  72.     ENVI-ret  %~2=%&v1%
  73.     ENVI-ret  %~3=%&v2%
  74. _END

  75. _SUB SetPos
  76.     SET &d2=%~3
  77.     FIND $%&d2%=,SET &d2=%~2
  78.     set @%1.POSTMSG=%EM_SETSEL%,%~2,%d2%
  79. _END
  80. _SUB SetAt
  81.     SET &d2=%~3
  82.     set &d3=%~4
  83.     FIND $%&d2%=, SET &d2=%~2
  84.     set @%~1.SENDMSG=%EM_SETSEL%,%~2,%d2%
  85.     set @%~1.SENDMSG=%EM_REPLACESEL%,7,@&d3
  86. _END
复制代码

还不理想 如果加入DPI缩放情况不容乐观

点评

太长了。 最小代码,仅仅够 演示 你的问题。  详情 回复 发表于 2024-6-6 20:29
回复

使用道具 举报

 楼主| 发表于 2024-6-6 20:29:07 | 显示全部楼层

太长了。 最小代码,仅仅够 演示 你的问题。
回复

使用道具 举报

发表于 2024-6-6 21:33:47 | 显示全部楼层
本帖最后由 Zap 于 2024-6-6 21:37 编辑
mdyblog 发表于 2024-6-6 20:29
太长了。 最小代码,仅仅够 演示 你的问题。
52行替换为 set d=123:456 : 后边的字符被吞了

点评

试试 SED -ts1 这个 禁止 转义符。 就是普通字符串 替换。 ENVI^ EnviMode=1 SET$ &NL=0d 0a SET V1=123X456 SED -ts1 &v2=,X,\1,%&V1% MESS. v1[%&NL%%&v1%]%&NL%%&NL% v2[%&NL%%&v2%] ============  详情 回复 发表于 2024-6-6 22:42
如是sed问题 但对写一个 小脚本 演示问题。  详情 回复 发表于 2024-6-6 21:38
回复

使用道具 举报

 楼主| 发表于 2024-6-6 21:38:38 | 显示全部楼层
Zap 发表于 2024-6-6 21:33
52行替换为 set d=123:456 : 后边的字符被吞了

如是sed问题
专门 写一个 小脚本 演示问题。
回复

使用道具 举报

 楼主| 发表于 2024-6-6 21:40:23 | 显示全部楼层
新版 可以 返会 字体名称

FONT   -p:&&f:&&fnm segmdl2.ttf.cmz
MESS. font:[%&f%]  [%&fnm%]

=================
font:[0x700021B]  ["Segoe MDL2 Assets"]
回复

使用道具 举报

发表于 2024-6-6 21:57:47 | 显示全部楼层
本帖最后由 Zap 于 2024-6-6 21:59 编辑
mdyblog 发表于 2024-6-6 21:38
如是sed问题
专门 写一个 小脚本 演示问题。

19302楼已修改 点替换便知set d=123:456 而光标处替换成了"123
回复

使用道具 举报

发表于 2024-6-6 22:05:47 | 显示全部楼层
LOAD --mem可以支持偏移吗

点评

//LOAD --mem &MyStript A B C SET-mkfixdummy &MyStript3 =&MyStript@$16;~ //偏移16WCHAR LOAD --mem &MyStript16 A B C  详情 回复 发表于 2024-6-6 22:27
回复

使用道具 举报

 楼主| 发表于 2024-6-6 22:27:06 | 显示全部楼层
泮安宁 发表于 2024-6-6 22:05
LOAD --mem可以支持偏移吗

//LOAD --mem &MyStript A B C  
SET-mkfixdummy  &MyStript3 =&MyStript@$16;~  //偏移16WCHAR
LOAD --mem &MyStript16 A B C  

点评

load --mem好像不支持动态改变啊,比如load --mem &a但&a中有一句清空a内容的语句,那么清空语句后面的命令继续执行时因内容改变应该导致执行结果相应改变(在这个例子中应该没有反应) a的原始内容为  详情 回复 发表于 2024-6-6 23:04
回复

使用道具 举报

 楼主| 发表于 2024-6-6 22:42:45 | 显示全部楼层
Zap 发表于 2024-6-6 21:33
52行替换为 set d=123:456 : 后边的字符被吞了

试试 SED -ts1
这个 禁止 转义符。 就是普通字符串 替换。

ENVI^ EnviMode=1
SET$ &NL=0d 0a
SET V1=123X456
SED  -ts1  &v2=,X,\1,%&V1%
MESS.   v1[%&NL%%&v1%]%&NL%%&NL% v2[%&NL%%&v2%]

=================
  v1[
123X456]

v2[
123\1456

回复

使用道具 举报

发表于 2024-6-6 23:04:00 | 显示全部楼层
mdyblog 发表于 2024-6-6 22:27
//LOAD --mem &MyStript A B C  
SET-mkfixdummy  &MyStript3 =&MyStript@$16;~  //偏移16WCHAR
LOAD - ...

load --mem好像不支持动态改变啊,比如load --mem &a但&a中有一句清空a内容的语句,那么清空语句后面的命令继续执行时因内容改变应该导致执行结果相应改变(在这个例子中应该没有反应)
  1. ENVI$# &a=0x4D 0x45 0x53 0x53 0x20 0x61 0x61 0x61 0x0D 0x0A 0x45 0x4E 0x56 0x49 0x2D 0x7A 0x65 0x72 0x6F 0x20 0x26 0x61 0x3D 0x0D 0x0A 0x4D 0x45 0x53 0x53 0x20 0x62 0x62 0x62
  2. LOAD --mem &a
复制代码
a的原始内容为
  1. MESS aaa
  2. ENVI-zero &a=
  3. MESS bbb
复制代码


点评

为什么要动态改变, 什么用处?  详情 回复 发表于 2024-6-6 23:22
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-10-13 19:14

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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