#!pecmd
#code=936T950
ENVI^ EnviMode=1

_SUB CHECK *   //简单 
    TEAM SET &WID=0| SET &RET=0
    //MESS  will check  lock, 拿WID
    { LOCK #pecmd  //共同瞬间锁#pecmd, 操作原子化
        LOCK --exist #DSystem_TEST1_Lck1,&RET
        REGI .HKCU\Software\DSystem\TEST1\WID,&WID
    }
    //MESS check=[%&RET%]
    IFEX $[ 1=%&RET% & %WID%>0 ],
    {   MESS 已经运行 WID=%&WID%, 推到前面吧。
        ENVI @@Visable=%&WID%:2   //显示并激活窗口, 数值2则恢复窗口
        ENVI @@POS=%&WID%:::::::1 //推到前面
        EXIT  FILE
    }
    IFEX $0=%&RET%,!  EXIT FILE 
    { LOCK  #DSystem_TEST1_Lck1,&RET
        WIN1
    }
_END

_SUB CHECKEx *   //更好，多检测几次
    TEAM SET &WID=0| SET &RET=0| SET &I=5000
    LOOP #%&I%>0,   //check  lock, 拿WID
    {   { LOCK #pecmd  //共同瞬间锁#pecmd, 操作原子化
            LOCK --exist #DSystem_TEST1_Lck1,&RET
            REGI .HKCU\Software\DSystem\TEST1\WID,&WID
        }
        IFEX $[ 1<>%&RET% | %&WID%>0 ],  EXIT LOOP
        TEAM WAIT 100| CALC I=%I% - 100
    }
    //MESS check=[%&RET%]
    IFEX $1=%&RET%,
    {   MESS 已经运行 WID=%&WID%, 推到前面吧。
        ENVI @@Visable=%&WID%:2   //显示并激活窗口, 数值2则恢复窗口
        ENVI @@POS=%&WID%:::::::1 //推到前面
        EXIT  FILE
    }
    IFEX $0=%&RET%,!  EXIT FILE 
    { LOCK  #DSystem_TEST1_Lck1,&RET
        WIN1
    }
_END

//CHECK  //简单  
CHECKEx    //更好， 
{ LOCK #pecmd  //共同瞬间锁#pecmd, 操作原子化
    REGI $HKCU\Software\DSystem\TEST1\WID=  //打扫
}



_SUB WIN1,W289H249,执行一次,,,  //1,,  //主窗口
    { LOCK #pecmd  //共同瞬间锁#pecmd
        REGI $HKCU\Software\DSystem\TEST1\WID=%&__WINID%
    }
    ENVI @this=执行一次[%&__WINID%]
_END

