You could have an OnStartup script that never returns and waits for the appropriate time, although I'm not a fan of that as it could delay startup (the scripting system isn't designed for scripts that never return from events).
A better way would be:
-
OnStartup script that sets up the theme/mode you want when Opus launches.
-
Using the Task Scheduler in Windows (or similar) to schedule commands which change the theme.
The Task Scheduler part is simple if Opus is always running. Just make tasks to turn Dark Mode on and off similar to this:
"C:\Program Files\GPSoftware\Directory Opus\dopusrt.exe" /cmd Set DARKMODE=on
If Opus isn't always running, that will launch it, which you might not want. In that case you could have Task Scheduler run something that tests if Opus is running first. Here's some VBScript I had already which shows one way to do that:
RestartOpus script
option explicit
Dim OpusInstallPath
OpusInstallPath = "C:\Program Files\GPSoftware\Directory Opus"
Private Function ProcessIsRunning( wmi, strProcess )
Dim colProcessList
Set colProcessList = wmi.Execquery("Select * from Win32_Process Where Name ='" & strProcess & "'")
If colProcessList.Count > 0 Then
ProcessIsRunning = True
Else
ProcessIsRunning = False
End If
Set colProcessList = Nothing
End Function
Private Function WaitForProcess( wmi, strProcess )
Dim i
WaitForProcess = False
For i = 0 to 100
If ProcessIsRunning( wmi, strProcess ) Then
WScript.Sleep 200
Else
WaitForProcess = True
Exit For
End If
Next
End Function
' ****************************************************************************
' *** MAIN *******************************************************************
' ****************************************************************************
Dim Shell
Set Shell = CreateObject("WScript.Shell")
' Shut down dopusrt.exe and dopus.exe if they are running.
Dim wmi
Set wmi = Getobject("Winmgmts:")
If ProcessIsRunning(wmi, "dopusrt.exe") Then
Shell.Run """" & OpusInstallPath & "\dopusrt.exe"" /dblclk=off", 1, TRUE
End If
If ProcessIsRunning(wmi, "dopus.exe") Then
Shell.Run """" & OpusInstallPath & "\dopusrt.exe"" /CMD Close PROGRAM", 1, TRUE
End If
' Wait for dopusrt.exe and dopus.exe to finish shutting down.
Dim AllStopped
AllStopped = False
If WaitForProcess(wmi, "dopus.exe") Then
If WaitForProcess(wmi, "dopusrt.exe") Then
AllStopped = True
End If
End If
If Not AllStopped Then
MsgBox WScript.ScriptName & ": Old instance of Opus is still running"
WScript.Quit 1
End If
Shell.CurrentDirectory = OpusInstallPath
Shell.Run """" & OpusInstallPath & "\dopusrt.exe"" /dblclk"
Shell.Run """" & OpusInstallPath & "\dopus.exe"" noautolister"
' MsgBox WScript.ScriptName & ": Opus restarted"
(Also, if Windows is set to change modes at different times during the day, Opus will automatically react to that as long as "Use system setting" is selected in Dark Mode prefs.)