无忧启动论坛

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

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

    [复制链接]
19501#
发表于 2025-11-20 16:54:05 来自手机 | 只看该作者
回复

使用道具 举报

19502#
发表于 2025-11-20 16:54:19 来自手机 | 只看该作者
学习学习
回复

使用道具 举报

19503#
发表于 2025-11-20 16:54:31 来自手机 | 只看该作者
学习学习
回复

使用道具 举报

19504#
发表于 2025-11-20 16:54:44 来自手机 | 只看该作者
学习学习
回复

使用道具 举报

19505#
发表于 2025-11-26 12:07:23 | 只看该作者
感谢楼主分享,感谢!!!!
回复

使用道具 举报

19506#
发表于 2025-12-4 21:04:29 | 只看该作者
用PECMD怎么调用CMD把INI文件打包成EXE,具体用什么参数命令,哪个版本才有这个功能。哪位大婶指点指点。
回复

使用道具 举报

19507#
发表于 2025-12-6 19:44:52 | 只看该作者
写了个软件安装管理器,根据列表文件list.ini文件里的内容自动创建复选框,软件数量不固定,预设的swin太大滚动条下面会空很多,swin太小会放不下,代码如下:

  1. _SUB MainWindow,W300H360,软件列表选择,,%windir%\system32\shell32.dll#316,15,,-top -disminb
  2.     SWIN SWIN1:Page11:-SWINMAIN,L10T33W273H240,,0x140
  3.     ENVI @SWINMAIN:SWIN1.ID=?&Swin1_Wid   //画框ID
  4.     ENVI @SWINMAIN.ID=?&SWINMAIN_Wid    //与Page11窗口ID相同%&Page1_WID%
  5.     LABE TitleLabel,L10T10W200H20,请选择要安装的软件:
  6.     ITEM OKButton,L120T280W60H30,安装,CALL OnOK
  7. _END

  8. _SUB Page11,W600H240,,,,:0xFFFFFF
  9.     ENVI &YPos=10
  10.     ENVI &Index=0
  11.     ENVI &inList=0
  12.     ENVI AllList=
  13.     SET$ NL=0D 0A

  14.     READ list.ini,*,&&AllContent

  15.     FORX *NL &AllContent,&&line,
  16.     {
  17.         mstr * &line1=1,1,&line
  18.         find $%&line1%=[,
  19.         {
  20.             find $%&line%=[softlist], ENVI &inList=1!ENVI &inList=0
  21.         }!
  22.         {
  23.             IFEX $%&inList%=1,
  24.             {
  25.                 FIND $%&line%=, exit -

  26.                 // 解析软件名称、路径、默认是否选中
  27.                 MSTR * -delims:| SoftName,SoftPath,SoftStatus=<1><2><3>&line

  28.                 CHEK Checkbox_%&Index%,L40T%&YPos%W250H20,%SoftName%
  29.                 IFEX $%SoftStatus%=0,ENVI @Checkbox_%&Index%.Check=1
  30.                 IFEX $%SoftStatus%=2,team ENVI @Checkbox_%&Index%.Check=1|ENVI @Checkbox_%&Index%.Enable=0

  31.                 ENVI &Checkbox_Name=Checkbox_%&Index%
  32.                 ENVI &Checkbox_Name_Path=%SoftPath%
  33.                 ENVI Checkbox_Name_Status=%SoftStatus%

  34.                 CALC &YPos=%&YPos% + 25
  35.                 CALC &Index=%&Index% + 1

  36.                 ENVI AllList=%Checkbox_Name_Path%%NL%%AllList%
  37.                 //mess %&AllList%
  38.                 //mess %Checkbox_Name%:%&SoftName%:%&Checkbox_Name_Path%:%Checkbox_Name_Status%
  39.             }
  40.         }
  41.     }

  42.     ENVI TotalCount=%&Index%

  43.     //MESS %TotalCount%
  44.     IFEX #%TotalCount%>=9,TEAM  MESS %H%|CALC H=(%TotalCount%-9)*35+%H%| MESS %H%|ENVI @@POS=%&SWIN1_Wid%::::%H%

  45. _END

  46. _SUB OnOK
  47. ENVI &AllList=%AllList%
  48. ENVI &InstPath=
  49. ENVI &Index=0

  50.     LOOP #%&Index% <= %TotalCount%,
  51.     {
  52.         READ  -*,%&Index%,&InstPath,&AllList
  53.         Find $%Checkbox_%&Index%.Check%=1,mess Checkbox_%&Index%选中\n%&InstPath%
  54.         CALC &Index=%&Index% + 1
  55.     }
  56. _END

  57. CALL @MainWindow
复制代码



代码运行后,swin不能实现滚动效果,参考官方实例搞不定,官方实例中主要起作用是这一句:ENVI @@POS=%&SWIN1_Wid%::::%H

但我看这样改变的是画布大小?

求教,谢谢

点评

swin有层级、滚动条可以通过代码滚动到指定位置。 这两个在 示例代码 文件夹里都有示例代码  详情 回复 发表于 2025-12-6 20:09
回复

使用道具 举报

19508#
发表于 2025-12-6 20:09:37 来自手机 | 只看该作者
dhwc 发表于 2025-12-6 19:44
写了个软件安装管理器,根据列表文件list.ini文件里的内容自动创建复选框,软件数量不固定,预设的swin太大 ...

swin有层级、滚动条可以通过代码滚动到指定位置。  这两个在 示例代码  文件夹里都有示例代码
回复

使用道具 举报

19509#
发表于 2025-12-6 20:52:11 | 只看该作者
红毛樱木 发表于 2025-12-6 20:09
swin有层级、滚动条可以通过代码滚动到指定位置。  这两个在 示例代码  文件夹里都有示例代码

我看的示例代码,那个功能过于完善了我这个场景觉得不太需要,核心语句不就是ENVI @@POS=%&SWIN1_Wid%::::%H%嘛?为啥写了没用呢
回复

使用道具 举报

19510#
发表于 2025-12-10 20:12:21 来自手机 | 只看该作者
dhwc 发表于 2025-12-6 20:52
我看的示例代码,那个功能过于完善了我这个场景觉得不太需要,核心语句不就是ENVI @@POS=%&SWIN1_Wid%::: ...

这个问题搞定了,调整的时机不对,方法也不对,最后在主窗体中加了个time控件解决了,也不知道是不是邪门歪道。

现在有新的问题:

1、怎样实现主窗体透明,swim不透明?

2、主窗体添加了全选/全不选按钮,好像不能穿透到swim去操作复选框?

3、添加了全选/全不选按钮,程序运行后,安装按钮文字不可见,随便点下某个复选框才会显示出来?

点评

上代码。瞎猜么。。。。  详情 回复 发表于 2025-12-10 21:17
回复

使用道具 举报

19511#
发表于 2025-12-10 21:17:59 | 只看该作者
dhwc 发表于 2025-12-10 20:12
这个问题搞定了,调整的时机不对,方法也不对,最后在主窗体中加了个time控件解决了,也不知道是不是邪门 ...

上代码。瞎猜么。。。。
回复

使用道具 举报

19512#
发表于 2025-12-10 21:39:21 | 只看该作者

  1. //_SUB MainWindow,W300H360,软件列表选择,,%windir%\system32\shell32.dll#130,15,,-top -disminb
  2. SET &SB_VERT=1
  3. SET &SIF_RANGE=0x0001

  4. ENVI &TotalCount=0
  5. ENVI &AllList=
  6. ENVI &Checkbox_All=0

  7. _SUB MainWindow,W300H360,软件列表选择,,%windir%\system32\shell32.dll#316,15,,-top -disminb
  8.     SWIN SWIN1:Page11:-SWINMAIN,L10T33W273H240,,0x140
  9.     ENVI @SWINMAIN:SWIN1.ID=?&Swin1_Wid   //画框ID
  10.     ENVI @SWINMAIN.ID=?&SWINMAIN_Wid    //与Page11窗口ID相同%&Page1_WID%
  11. ENVI @SWINMAIN.bkcolor=#FFFFFF
  12.     LABE -trans TitleLabel,L10T10W200H20,请选择要安装的软件:
  13.     ITEM OKButton,L200T285W84H30,开始安装,CALL OnOK
  14.     TIME Timer1,300,call SetSwin
  15.     CHEK Checkbox_All,L11T290W250H20,全选/全不选,call CheckboxAllChanged,1
  16. _END


  17. _SUB Page11,W600H240,,,,:0xFFFFFF
  18. //ENVI @this.bkcolor=0x000000
  19.     ENVI &YPos=10
  20.     ENVI &Index=0
  21.     ENVI &inList=0
  22.     SET$ NL=0D 0A

  23.     READ list.ini,*,&&AllContent

  24.     FORX *NL &AllContent,&&line,
  25.     {
  26.         mstr * &line1=1,1,&line
  27.         find $%&line1%=[,
  28.         {
  29.             find $%&line%=[softlist], ENVI &inList=1!ENVI &inList=0
  30.         }!
  31.         {
  32.             IFEX $%&inList%=1,
  33.             {
  34.                 FIND $%&line%=, exit -
  35.                
  36.                 // 解析软件名称、路径、默认是否选中
  37.                 MSTR * -delims:| SoftName,SoftPath,SoftStatus=<1><2><3>&line
  38.                  
  39.                 CHEK Checkbox_%&Index%,L40T%&YPos%W180H20,%SoftName%
  40.                 IFEX $%SoftStatus%=0,ENVI @Checkbox_%&Index%.Check=1
  41.                 IFEX $%SoftStatus%=2,team ENVI @Checkbox_%&Index%.Check=1|ENVI @Checkbox_%&Index%.Enable=0
  42.                
  43.                 ENVI &Checkbox_Name=Checkbox_%&Index%
  44.                 ENVI &Checkbox_Name_Path=%SoftPath%
  45.                 ENVI Checkbox_Name_Status=%SoftStatus%

  46.                 CALC &YPos=%&YPos% + 25
  47.                 CALC &Index=%&Index% + 1
  48.                
  49.                 ENVI &AllList=%Checkbox_Name_Path%%NL%%&AllList%
  50.             }

  51.         }
  52.     }
  53.     ENVI &TotalCount=%&Index%

  54.     //Find $%Checkbox_All.Check%=1,mess 全选!mess 全不选
  55.    
  56. _END

  57. _SUB SetSwin *
  58.     ENVI @Timer1.*del=
  59.     CALC #Hv=%&TotalCount%*26
  60.     ENVI @@POS=%&SWINMAIN_Wid%::::%Hv%
  61.     @TEAM SET-int inf=%&SIF_RANGE%:4| SET-int inf=%Hv%:12
  62.     CALL $--qd user32.dll,SetScrollInfo,#%SWIN1_Wid%,#%SB_VERT%,*&inf
  63. _END


  64. _SUB CheckboxAllChanged
  65.     ENVI &i=0
  66.     Find $ENVI @%&Swin1_Wid%:Checkbox_%&i%.Check=1,
  67.     {
  68.      MESS %Checkbox_All.Check%:::%&TotalCount%
  69.         LOOP #%&i% < %&TotalCount%,
  70.         {
  71.              ENVI @Checkbox_%&i%.Check=1
  72.              CALC &i=%&i% + 1
  73.         }
  74.     EXIT _Sub
  75.     }
  76.     Find $ENVI @%&Swin1_Wid%:Checkbox_%&i%.Check=0,
  77.     {
  78.         LOOP #%&i% < %&TotalCount%,
  79.         {
  80.              ENVI @Checkbox_%&i%.Check=0
  81.              CALC &i=%&i% + 1
  82.         }
  83.      }
  84. _END

  85. _SUB OnOK
  86. ENVI &InstPath=
  87. ENVI &Index=0

  88.     LOOP #%&Index% <= %&TotalCount%,
  89.     {
  90.         READ  -*,%&Index%,&InstPath,&AllList
  91.         Find $%Checkbox_%&Index%.Check%=1,TEAM mess Checkbox_%&Index%选中\n%&InstPath%
  92.         CALC &Index=%&Index% + 1
  93.     }

  94. _END


  95. CALL @MainWindow
复制代码

点评

看下了“画布”的原理,是GDI+绘制的,不是单独的传统窗口空间类型,自动继承透明通道等信息。 这个貌似PECMD 弄不了,因为默认就继承了。 另外两个问题,代码里没重现 不知道。  详情 回复 发表于 2025-12-11 14:29
回复

使用道具 举报

19513#
发表于 2025-12-11 14:29:33 | 只看该作者

看下了“画布”的原理,是GDI+绘制的,不是单独的传统窗口空间类型,自动继承透明通道等信息。   这个貌似PECMD 弄不了,因为默认就继承了。     另外两个问题,代码里没重现 不知道。
回复

使用道具 举报

19514#
发表于 2025-12-11 15:02:43 | 只看该作者
本帖最后由 dhwc 于 2025-12-11 15:04 编辑
红毛樱木 发表于 2025-12-11 14:29
看下了“画布”的原理,是GDI+绘制的,不是单独的传统窗口空间类型,自动继承透明通道等信息。   这个貌 ...

全选问题搞定了,还是用定时器控件。不能透明就算了。那个显示发虚的问题怎么解决?如图:



看右下角按钮



点评

swin高度太高覆盖了吧  详情 回复 发表于 2025-12-11 17:07
全选太长了,搞短一点  详情 回复 发表于 2025-12-11 15:12
回复

使用道具 举报

19515#
发表于 2025-12-11 15:12:13 | 只看该作者
dhwc 发表于 2025-12-11 15:02
全选问题搞定了,还是用定时器控件。不能透明就算了。那个显示发虚的问题怎么解决?如图:

全选太长了,搞短一点
回复

使用道具 举报

19516#
发表于 2025-12-11 15:19:06 | 只看该作者
489432757 发表于 2025-12-11 15:12
全选太长了,搞短一点

靠,特妈的,在swin里随便复制的,还以为是显示问题,要刷新啥的呢,谢谢
回复

使用道具 举报

19517#
发表于 2025-12-11 17:07:02 来自手机 | 只看该作者
dhwc 发表于 2025-12-11 15:02
全选问题搞定了,还是用定时器控件。不能透明就算了。那个显示发虚的问题怎么解决?如图:



swin高度太高覆盖了吧
回复

使用道具 举报

19518#
发表于 2025-12-11 17:13:18 | 只看该作者
红毛樱木 发表于 2025-12-11 17:07
swin高度太高覆盖了吧

解决了,是全选那个复选框太长覆盖了
回复

使用道具 举报

19519#
发表于 5 天前 | 只看该作者
学习学习
回复

使用道具 举报

19520#
发表于 昨天 13:56 | 只看该作者
pecmd.exe放到什么位置
回复

使用道具 举报

19521#
发表于 8 小时前 来自手机 | 只看该作者
本帖最后由 dhwc 于 2025-12-24 20:16 编辑

如果主窗体已经创建,怎样实时控制主窗体的透明度?     
CALL Main

_SUB Mainwindow,W300H360,窗口,,,15,,-top -disminb
ITEM OKButton,L200T285W84H30,调整透明度,CALL set
_END  

???

pecmd帮助里有ENVI @Mainwindow.trans=0x1,但是这个好像不能起作用,也不能指定具体的透明值
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-12-24 23:54

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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