|
还有就是延时是阻塞的,延时的不只是发送显示桌面命令,连重启shell本身也延时了,当然延时是我加的,如果不加,发的太早了,没效果,发送显示桌面理论上是2次,首次启动SHELL与重启后的每次。
如下:
// 首次登录
wait 3000 // 这个时间不好控制,有传说是检测 桌面还是Shell_TrayWnd相关的状态,就绪的话,发送立即生效的
ENVI @@SENDMSG=**Shell_TrayWnd*:0x5BA:0:0 //显示桌面
IFEX [ '%&::__PECMD.ONSHELL.LOG%'<>'' & %&::__PECMD.ONSHELL.LOG%, TEAM DATE *space0 &&T| WRIT %&::__PECMD.ONSHELL.LOG%,$+0,%&T% %*
wait 3000 // 又是延时,其实我不清楚延时放哪里合适,或者说首次显示桌面更应该放PECMD.INI的SHELL后。
FIND $[ '%~1'='AfterRun' & '%~2'='3' ],!! ENVI @@SENDMSG=**Shell_TrayWnd*:0x5BA:0:0 //显示桌面
------------------------------------------------
延时的话, 最好用线程。否则影响系统核心进程的运行。
你是说下面的意思吗?
~~~~~~~~~~~~~~~~~~~~~
IF(首次登录成功执行SHEL )
{wait 3000 // 这个时间不好控制,有传说是检测 桌面还是Shell_TrayWnd相关的状态,就绪的话,发送立即生效的
ENVI @@SENDMSG=**Shell_TrayWnd*:0x5BA:0:0 //显示桌面
}
IFEX [ '%&::__PECMD.ONSHELL.LOG%'<>'' & %&::__PECMD.ONSHELL.LOG%, TEAM DATE *space0 &&T| WRIT %&::__PECMD.ONSHELL.LOG%,$+0,%&T% %*
FIND $[ '%~1'='AfterRun' & '%~2'='3' ],
{ wait 3000 // 又是延时,其实我不清楚延时放哪里合适,或者说首次显示桌面更应该放PECMD.INI的SHELL后。
ENVI @@SENDMSG=**Shell_TrayWnd*:0x5BA:0:0 //显示桌面
}
~~~~~~~~~~~~~~~~~~~~~
如果这样,写成:
~~~~~~~~~~~~~~~~~~~~~
IFEX [ '%&::__PECMD.ONSHELL.LOG%'<>'' & %&::__PECMD.ONSHELL.LOG% ], TEAM DATE *space0 &&T| WRIT %&::__PECMD.ONSHELL.LOG%,$+0,%&T% %*
SET &cmd=TEAM
FIND $[ '%~1'='AfterRun' & '%~2'='2' ],!! SET CMD=TEAM wait 3000| ENVI @@SENDMSG=**Shell_TrayWnd*:0x5BA:0:0| // 首次登录
FIND $[ '%~1'='AfterRun' & '%~2'='3' ],!! SET CMD=%&CMD% wait 3000| ENVI @@SENDMSG=**Shell_TrayWnd*:0x5BA:0:0| //显示桌面
FIND $%&CMD%<>TEAM, THREAD$ %&CMD% //线程执行去吧
~~~~~~~~~~~~~~~~~~~~~
|
|