使用批处理脚本确定打开的应用程序是否最小化或最大化?

使用批处理脚本确定打开的应用程序是否最小化或最大化?

我正在运行一个批处理脚本,以在机器 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

相关内容