我正在运行一个批处理脚本,以在机器 HMI 上显示时间表,我的脚本在记事本中显示时间表,如果时间表已更新,我将删除当前文件并最大化显示新时间表以供操作员查看。我有一个计划任务每分钟运行一次以检查某些条件
时间表是否存在?存在 - 检查是否有更新的版本 - 如果有更新的版本,则从 HMI 中删除旧时间表并最大化打开新时间表 - 如果存在且没有更新的版本,则检查时间表是否在 HMI 上打开 - 如果已关闭,则重新打开最小化的时间表。不存在 - 从网络复制时间表并在 HMI 上最大化打开时间表。如果时间表已更改,我想确保操作员能够看到时间表,如果时间表已最小化,我会假设他们已经查看过它,但如果另一个应用程序从时间表中夺走了焦点,我希望能够确定时间表是否仍在后台最大化。
问题:是否有一个脚本可以用来检查窗口是否已被最小化(由操作员)或时间表(记事本应用程序)是否仍在后台最大化,但另一个应用程序窃取了焦点,如果它仍然在后台最大化,是否将其带回主焦点?
HMI 是触摸屏,我不知道通过选择 Windows 桌面工具栏上的计划(记事本应用程序)是否可以达到最小化的条件,就像使用右上角的控件最小化应用程序一样?
这是主要脚本,我还有两个附加脚本,它们根据一些附加标准被调用来打开最小计划或最大值。
@ECHO off
IF NOT EXIST "c:\temp\Builder Schedule"\schedule.txt GOTO one
GOTO two
:one
TASKKill /IM notepad.exe
TASKKill /IM notepad.exe
TASKKill /IM notepad.exe
TASKKill /IM notepad.exe
TASKKill /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe
ROBOCOPY "\\global\americas\data\ceng\shared\InfinityQS\Tire Assembly\2nd Stage Builder Checks\Servicer Schedule"\ 3DR* /Z /FFT "C:\temp\Builder Schedule"\ /LOG:"c:\temp\Builder Schedule\log"\log.log
TIMEOUT /T 2
REN "c:\temp\Builder Schedule"\3DR.txt schedule.txt
call "c:\temp\Builder Schedule\scripts"\UpdateBuilderSchedule.bat
GOTO four
:two
ROBOCOPY "\\global\americas\data\ceng\shared\InfinityQS\Tire Assembly\2nd Stage Builder Checks\Servicer Schedule"\ 3DR* /Z /FFT "c:\temp\Builder Schedule"\ /LOG:"c:\temp\Builder Schedule\log"\log.log
FC "c:\temp\Builder Schedule"\3DR.txt "c:\temp\Builder Schedule"\schedule.txt /B
echo %errorlevel%
if %errorlevel% NEQ 0 goto three
GoTo end
:three
TASKKill /IM notepad.exe
TASKKill /IM notepad.exe
TASKKill /IM notepad.exe
TASKKill /IM notepad.exe
TASKKill /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe
TIMEOUT /T 2
del "c:\temp\Builder Schedule"\schedule.txt /F /Q
REN "c:\temp\Builder Schedule"\3DR.txt schedule.txt
TIMEOUT /T 1
call "c:\temp\Builder Schedule\scripts"\UpdateBuilderSchedule.bat
GoTo four
:end
QPROCESS "notepad.exe">NUL
echo %errorlevel%
IF %errorlevel% EQU 0 goto four
call "c:\temp\Builder Schedule\scripts"\Minimized.bat
:four
del "c:\temp\Builder Schedule"\3DRtemp.txt /F /Q
del "c:\temp\Builder Schedule"\*.tmp /F /Q
exit