I have a vbscript that repeatedly (every 30 seconds) needs to run a commandline program. The script is running in the background without any presence on the monitor. The program takes less than a second to run and my script captures the return code. My problem is every time I run it, it creates a DOS box window (which is ugly, but Ok) and it steals the focus. So if the user is running word and they are typing along, all of a sudden their keystrokes are lost. Does anyone know a way to initiate this process without this occurring? Thanks
Here is my code that I use
Function RunSafeBootSTATE
On Error Resume Next
Dim WshShell, oExec, StartTime
Set WshShell = CreateObject("WScript.Shell")
WScript.Sleep 10000 ' allow time for installer to wrap up previous
Dim CmdLine
CmdLine = "C:\Program Files\XXBoot\hjklmcl.exe -command:getcryptstate"
Set oExec = WshShell.Exec(CmdLine)
If Err.Number<> 0 Then
LogMessage "Error Starting Command: " & Err.Description & " (" & Err.Number & ")"
RunSafeBootSTATE = -1
Exit Function
End If
StartTime = Now
Do While oExec.Status = 0
WScript.Sleep 1000
If DateDiff("m",StartTime,Now) > 10 Then
' error
LogMessage "Failed to complete in 10 minutes"
RunSafeBootSTATE = -1
Exit Function
End If
Loop
' We Completed Command
If oExec.ExitCode = 0 Then
' We are Done, let's check results
Else
' We Failed
LogMessage "Returned Error Code: " & oExec.ExitCode
RunSafeBootSTATE = -1
Exit Function
End If
Dim CmdResult
CmdResult = oExec.StdOut.ReadAll()
'continues to process CmdResult
End Function
http://www.devguru.com/technologies/wsh/quickref/wshshell_Run.html