无忧启动论坛

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

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

    [复制链接]
19261#
发表于 2024-6-4 21:17:27 | 只看该作者
mdyblog 发表于 2024-6-4 17:57
//2、要求:字符串“顺序”在同一行中出现多次,该行号仅返回一次。
ENVI$ &NL=0d 0a
ENVI &MSG=顺序AA ...

pecmd支持内置一个字体到主程序吗,比如图标字体,某些系统没有图标字体,调用起来就很麻烦要自己转成图片

点评

新版 FONT支持 私有字体 FONT -p[:返回名] //加载 私有字体 FONT - -p 上次返回值 //主动删除 私有字体 , 一般不需要, 程序结束就自带删除了 资源 和 字体文件 可以 CMPS -m 压缩 1: FONT -  详情 回复 发表于 2024-6-6 04:29
试试  详情 回复 发表于 2024-6-4 23:03
该重写你的连接器了,现在PECMD支持圆角渐透明  详情 回复 发表于 2024-6-4 21:41
字体文件应该需要单独释放出来的,内置后PUTF释放出来,然后FONT加载,不用了再FONT - 卸载  详情 回复 发表于 2024-6-4 21:33
回复

使用道具 举报

19262#
发表于 2024-6-4 21:33:49 | 只看该作者
826773297 发表于 2024-6-4 21:17
pecmd支持内置一个字体到主程序吗,比如图标字体,某些系统没有图标字体,调用起来就很麻烦要自己转成图 ...

字体文件应该需要单独释放出来的,内置后PUTF释放出来,然后FONT加载,不用了再FONT - 卸载
回复

使用道具 举报

19263#
发表于 2024-6-4 21:41:39 | 只看该作者
826773297 发表于 2024-6-4 21:17
pecmd支持内置一个字体到主程序吗,比如图标字体,某些系统没有图标字体,调用起来就很麻烦要自己转成图 ...

该重写你的连接器了,现在PECMD支持圆角渐透明
回复

使用道具 举报

19264#
 楼主| 发表于 2024-6-4 22:21:44 | 只看该作者
Anson4 发表于 2024-6-4 18:19
运行结果符合要求,谢谢!只是前面我的描述似乎有误,正确要求应该是这样:字符串“顺序”在同一行中出现 ...

//2X、要求:字符串“顺序”在同一行中出现1次或多次,该行号仅返回一次。
ENVI$ &NL=0d 0a
ENVI$ &NLa=0a
ENVI &MSG=顺序AA获取指定DEF字符串出现的顺序行号AA
\%&NL%窗口使用缩放比例缩放后   //顺序
\%&NL%在高DPI显示顺序环境窗口高度超出顺序预期。
SED* ;;*&SED_AllLineNum=?0,%&NL%[^%&NLa%]*顺序[^%&NLa%]*[%&NL%],,%&NL%%&MSG%%&NL%
MESS [%&SED_AllLineNum%]

------------------------
[1 3]

点评

谢谢!  发表于 2024-6-5 15:39
回复

使用道具 举报

19265#
 楼主| 发表于 2024-6-4 23:03:41 | 只看该作者
826773297 发表于 2024-6-4 21:17
pecmd支持内置一个字体到主程序吗,比如图标字体,某些系统没有图标字体,调用起来就很麻烦要自己转成图 ...

试试
回复

使用道具 举报

19266#
发表于 2024-6-5 06:50:24 | 只看该作者
本帖最后由 hhh333 于 2024-6-5 07:04 编辑

看下面:
  1. ENVI^ EnviMode=1
  2. SET$ &NL=0d 0a
  3. SET &v1=1A11%&NL%2A22%&NL%3A33%&NL%4A44%&NL%55A5
  4. SED &v2=2:2,%&NL%,-,%&v1%
  5. SED &v3=2:-2,%&NL%,-,%&v1%

  6. MESS.   v1[%&NL%%&v1%]%&NL% v2[%&NL%%&v2%]%&NL% v3[%&NL%%&v3%]
复制代码
得到结果如下:
  1. v1[
  2. 1A11
  3. 2A22
  4. 3A33
  5. 4A44
  6. 55A5]
  7. v2[
  8. 1A11
  9. 2A22
  10. 3A33-4A44-55A5]
  11. v3[
  12. 1A11
  13. 2A223A334A44
  14. 55A5]
复制代码
1、有错误,倒序没用”-"号替换
2、还是不太对,主要是不一致
SED &v2=2:2  这个:2代表正序跳过次数,即从顺数第3个开始替换
SED &v2=2:-2  这个:-2代表反序起次,即从倒数第2个开始替换
因此,要保持兼容,:号后的数表示起次是不对的

点评

以前的逻辑不能改, 否则 出乱子。 倒序 如果 :-n,如果还是理解为 (从右 )跳过n次。 从最右边开始替换, 那么 会出现容易出错的 -0 程序处理-0没问题。 就怕 写代码 容易把 -0 写成 0.,变成从最左开始。  详情 回复 发表于 2024-6-5 08:51
回复

使用道具 举报

19267#
 楼主| 发表于 2024-6-5 08:51:00 | 只看该作者
本帖最后由 mdyblog 于 2024-6-5 11:34 编辑
hhh333 发表于 2024-6-5 06:50
看下面:
得到结果如下:
1、有错误,倒序没用”-"号替换

以前的逻辑不能改, 否则 出乱子。
倒序 如果 :-n,如果还是理解为 (从右 )跳过n次。
从最右边开始替换,
那么 会出现容易出错的  -0

程序处理-0没问题。 就怕 写代码  容易把 -0 写成 0.,变成从最左开始。


现在:
从左:0 1 2 3 4 5  //跳过次数n
从右:  -1 -2   -3    -4   -5    -6  //[-]起次n

现在从 整数  的角度理解:0 ~ n 从做开始的 。 0 表示从最左最开始替换
-1 ~- n 从做开始的 。 -1表示从最右最开始替换


如果严格按字面  1基  [-]起次  理解
从左:1 2 3 4 5  6  //起次 1~n  ====不兼容以前代码, 不考虑
从右: -1    -2   -3   -4  -5  -6  //-起次 -0 ~-n

如果严格按字面  0基  [-]起次  理解
从左:  0  1 2 3 4 5  //起次 0~n
从右: -0  -1    -2   -3   -4   -5   //-起次 -0~ -n    出现-0 ,容易犯错。

如果严格按字面  [-]跳过次数  理解
从左:0 1 2 3 4 5  //跳过次数0~n
从右: -0  -1   -2    -3    -4   -5   //-跳过次数 -0~-n    出现-0 ,容易犯错。




~~~~~~~~~~~~~
要不, 使用 -0 表示从 最右一次 开始替换。 0基起次。   这样逻辑纯粹一些。



点评

哎呀,根本不要改了,我用230422版本,结果很正确: v1[ 1A11 2A22 3A33 4A44 55A5] v2[ 1A11 2A22 3A33-4A44-55A5] v3[ 1A11-2A22-3A33 4A44 55A5]  详情 回复 发表于 2024-6-5 15:47
为了与前面兼容,以前是X:Y,X代表替换次数,默认为1,Y代表跳过次数,默认为0 在前面加负号,或加一个开头,代表反向,如-X:Y,或加SED -R,代替次数与跳过次数意义不变。容易理解也容易上手 譬如 1、SED A=X:Y,  详情 回复 发表于 2024-6-5 15:31
回复

使用道具 举报

19268#
发表于 2024-6-5 15:31:22 | 只看该作者
本帖最后由 hhh333 于 2024-6-5 17:14 编辑
mdyblog 发表于 2024-6-5 08:51
以前的逻辑不能改, 否则 出乱子。
倒序 如果 :-n,如果还是理解为 (从右 )跳过n次。
从最右边开始替 ...

为了与前面兼容,以前是X:Y,X代表替换次数,默认为1,Y代表跳过次数,默认为0
在前面加负号,或加一个开关,代表反向,如-X:Y,或加SED -R,代替次数与跳过次数意义不变。容易理解也容易上手
譬如
1、SED A=X:Y,代表左起Y+1位替代X次
2、SED A=N,代表左起替代N次
3、SED A=,即为空代表左起首个位替代,相当于SED A=1:0,
4、SED A=0,代替所有
反向
1、SED A=-X:Y,代表右起Y+1位替代X次
2、SED A=-N,代表右起替代N次
3、SED A=-,即只有负号代表右起首个位替代,相当于SED A=-1:0,


你看这完全不影响以前的代码,也不用处理-0这种不好理解的情况


点评

很清楚。 就是和 MSTR /LSTR /RPOS 等换了风格。 在次数(长度)上 表示方向  详情 回复 发表于 2024-6-5 21:52
回复

使用道具 举报

19269#
发表于 2024-6-5 15:47:40 | 只看该作者
mdyblog 发表于 2024-6-5 08:51
以前的逻辑不能改, 否则 出乱子。
倒序 如果 :-n,如果还是理解为 (从右 )跳过n次。
从最右边开始替 ...

哎呀,根本不要改了,我用230422版本,结果很正确:
v1[
1A11
2A22
3A33
4A44
55A5]
v2[
1A11
2A22
3A33-4A44-55A5]
v3[
1A11-2A22-3A33
4A44
55A5]

回复

使用道具 举报

19270#
发表于 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
回复

使用道具 举报

19271#
发表于 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
回复

使用道具 举报

19272#
发表于 2024-6-5 16:32:47 | 只看该作者
泮安宁 发表于 2024-6-5 16:24
右移1位不应该是0吗,为什么是0x80

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

使用道具 举报

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

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

使用道具 举报

19274#
 楼主| 发表于 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 都表示全部替换。  
回复

使用道具 举报

19275#
 楼主| 发表于 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
回复

使用道具 举报

19276#
 楼主| 发表于 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%  //主动提前删除


效果:


回复

使用道具 举报

19277#
发表于 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
复制代码


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

使用道具 举报

19278#
发表于 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
回复

使用道具 举报

19279#
发表于 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
回复

使用道具 举报

19280#
 楼主| 发表于 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
回复

使用道具 举报

19281#
 楼主| 发表于 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"
回复

使用道具 举报

19282#
发表于 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
回复

使用道具 举报

19283#
发表于 2024-6-6 17:36:37 | 只看该作者
mdyblog 发表于 2024-6-6 12:52
示例\Edit位置.wcs

获得光标位置:

谢谢 好使
回复

使用道具 举报

19284#
发表于 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
回复

使用道具 举报

19285#
发表于 2024-6-6 18:45:18 | 只看该作者
mdyblog 发表于 2024-6-6 12:52
示例\Edit位置.wcs

获得光标位置:

/也会被吞

点评

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

使用道具 举报

19286#
 楼主| 发表于 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次;

那好
回复

使用道具 举报

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

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

使用道具 举报

19288#
 楼主| 发表于 2024-6-6 19:06:35 | 只看该作者

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

使用道具 举报

19289#
发表于 2024-6-6 19:40:48 | 只看该作者
我也没太看懂,怎么被呑
回复

使用道具 举报

19290#
发表于 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,$® Core™   //®™
  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
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-24 11:49

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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