无忧启动论坛

标题: pecmd代码求助 [打印本页]

作者: wjgyz740526    时间: 2024-7-17 20:33
标题: pecmd代码求助
想做一个软件选择安装管理器,功能:
1、office2024、office2016、office2010只能三选一,不能同时安装两个版本;
2、别的软件都可以任意选择;
3、默认选择情况下,10秒倒计时结束后自动安装;
4、10秒内任意选择或不选择某个软件,倒计时结束。

代码如下:

_SUB Windows1,W360H300,%WinName%,,%WindowIcon%,0
    IFEX .\InstList.INI,FILE .\InstList.INI

    ENVI $AutoInst=1

    LABE Label1,L15T12W300H60,点选你要安装的软件:
    GROU GrouDir,L10T37W335H69,办公软件,Office三个版本任选其一,不能多选
    CHEK CHEK_A,L20T57W82H17,Office 2024,TEAM ENVI @CHEK_B.Check=0|ENVI @CHEK_C.Check=0|CALL CheckAuto,1,1
    CHEK CHEK_B,L139T57W82H17,Office 2016,TEAM ENVI @CHEK_A.Check=0|ENVI @CHEK_C.Check=0|CALL CheckAuto,0,1
    CHEK CHEK_C,L258T57W82H17,Office 2010,TEAM ENVI @CHEK_B.Check=0|ENVI @CHEK_A.Check=0|CALL CheckAuto,0,1
    CHEK CHEK_D,L20T77W160H17,万兴PDFelement 10.4.6,CALL CheckAuto,1,1

    GROU GrouDir,L10T111W335H52,网络软件
    CHEK CHEK_E,L20T131W95H17,360极速浏览器,CALL CheckAuto,1,1
    CHEK CHEK_F,L139T131W95H17,微信,CALL CheckAuto,1,1
    CHEK CHEK_G,L258T131W85H17,QQ(绿色),CALL CheckAuto,1,1

    GROU GrouDir,L10T168W335H52,杀毒软件
    CHEK CHEK_H,L20T188W82H17,火绒安全,CALL CheckAuto,1,1

    ITEM Button1,L135T230W80H25,我不需要,KILL \%Windows1%
    ITEM Button2,L216T230W130H25,倒计时后自动安装(30),@TEAM CALL Inst

    CHEK CHEK_I,L20T232W82H17,备份软件包,CALL CheckAuto,0,1

    LABE Label2,L323T236W12H17,%&B%,,0x0000ff,

    TIME -t:10 &Timer1,1000, TEAM CALC n=%n%+1|CALC B=10-%n%|ENVI @Label2=%B%|CALL show


_END


ENVI WinName=常用软件选择与安装
ENVI WindowIcon=%windir%\system32\shell32.dll#130
CALL @Windows1


_SUB show
mess %B% *400
    IFEX $%B%=1 & IFEX $%AutoInst%=1,CALL Inst
_END


_SUB Inst
    IFEX $%CHEK_A.Check%=1,WRIT .\InstList.INI,+0,Office 2024
    IFEX $%CHEK_B.Check%=1,WRIT .\InstList.INI,+0,Office 2016
    IFEX $%CHEK_C.Check%=1,WRIT .\InstList.INI,+0,Office 2010
    IFEX $%CHEK_D.Check%=1,WRIT .\InstList.INI,+0,PDFelement
    IFEX $%CHEK_E.Check%=1,WRIT .\InstList.INI,+0,360Chrome
    IFEX $%CHEK_F.Check%=1,WRIT .\InstList.INI,+0,Wechat
    IFEX $%CHEK_G.Check%=1,WRIT .\InstList.INI,+0,QQ
    IFEX $%CHEK_H.Check%=1,WRIT .\InstList.INI,+0,HR
    IFEX $%CHEK_I.Check%=1,FILE .\*.7Z=>%TEMP%
    KILL \%Windows1%
_END


_SUB CheckAuto
    ENVI @Button2.color=0x008000
    ENVI AutoInst=0
    ENVI @Button2=选好了,开始安装
    ENVI @Timer1=0
    ENVI B=999
    ENVI @Label2.Visible=0
_END

现在两个问题:
1、10秒内不做选择,代码能够正确导出要安装的软件列表,并自动关闭窗口。但10秒内任意选择一个软件后,虽然能导出软件列表,但还是会在10s后关闭窗口?我暂停计时器也没用,哪怕指定%B%的值也没用?
2、任意选择一个软件后,按钮变绿色,但很奇怪,再选择一次,按钮又会变黑色?

哪错了,肯请指教,谢谢


pe求助区太冷清,换个板块,版主见谅
作者: 红毛樱木    时间: 2024-7-17 21:44
控件的名称前的&和变量前带的&不是一回事了。控件前的&是一个整体。
比如你这里的:
TIME -t:10 &Timer1,1000, TEAM CALC n=%n%+1|CALC B=10-%n%|ENVI @Label2=%B%|CALL show
而后面的
ENVI @Timer1=0
中却没有&,所以ENVI @Timer1=0实际是针对叫Timer1的控件而不是叫&Timer1的控件。
ENVI @Timer1=0改成ENVI @&Timer1=0即可。
作者: wjgyz740526    时间: 2024-7-17 21:54
红毛樱木 发表于 2024-7-17 21:44
控件的名称前的&和变量前带的&不是一回事了。控件前的&是一个整体。
比如你这里的:
TIME -t:10 &Timer1, ...

感谢回复

还真的是没注意,明天试下
作者: wn168cn@163.com    时间: 2024-10-18 17:33
红毛樱木 发表于 2024-7-17 21:44
控件的名称前的&和变量前带的&不是一回事了。控件前的&是一个整体。
比如你这里的:
TIME -t:10 &Timer1, ...

感谢分享




欢迎光临 无忧启动论坛 (http://wuyou.net./) Powered by Discuz! X3.3