Ich würds ungefähr so machen (in Pseudocode):

Ein Skript was angetriggert wird wenn ein Bildfenster geöffnet werden soll:
Code:
OeffneBildfenster(Bildname)
{
  SchließeAlleBildfenster()
  Bildfenster Bildname öffnen
  Öffnungszeitpunkt = AktuelleDateTime
  BildfensterGeöffnet = true  
}
Und ein Skript das in einem Zeitintervall (10 Sekunden, minütlich o.Ä angetriggert wird). Du könntest das Skript auch parallel von SPS und Aufgabenplaner anstoßen lassen, dann wird es spätestens nach 1 Minute ausgeführt auch wenn die SPS nicht erreichbar sein sollte.
Code:
Timer()
{
  Wenn BildfensterGeöffnet = True
  {
    Wenn AktuelleDateTime >= Öffnungszeitpunkt
    {
      SchließeAlleBildfenster()
      BildfensterGeöffnet = False
    }
  }
}
Ob das für den Bediener praktisch ist wenn ein Skript ihm andauernd ein gerade geöffnetes Fenster wieder schließt, lasse ich mal dahingestellt. Mir gehen solche Automatismen immer ziemlich auf den Keks.