1

I have created a script which checks for the idle time using a program MousePos.exe and pushes the response back to itself to work out whether there has been any mouse movement. This all works fine, however everytime the MousePos.exe runs it flashes on the screen and I want to hide this. I have no idea how to do this, I expected it would be quite simple.

I was advised I need to Use the WshShell object's Run method instead of the WshScriptExec object but I have no idea how to do this and still read in the response from the EXE.

Function execStdOut(cmd)
    Dim goWSH : Set goWSH = CreateObject("WScript.Shell")
    Dim aRet: Set aRet = goWSH.Exec(cmd)
    execStdOut = aRet.StdOut.ReadAll()
End Function

'wait 2 seconds for things to calm now
WScript.Sleep 2000

'get initial Mouse XY
MPOS = execStdOut("cmd /c C:\Windows\MousePos.exe")

WScript.Sleep 10000 '10 seconds

'set initial idle counter
Idle = 0

Do While forever = 0
    OLD  = MPOS
    MPOS = execStdOut("cmd /c C:\Windows\MousePos.exe")
    If OLD = MPOS Then
        Idle = Idle + 1
        If idle = 12 Then '12 x 10 seconds for 2 minute timeout
            idle = 0
            Set objShell = WScript.CreateObject("WScript.Shell")
            objshell.Run "C:\Windows\IERestart_countdown.hta", 1, True
        End If
    Else
        idle = 0
    End If
    WScript.Sleep 10000 ' 10 seconds
Loop
Étienne Laneville
  • 4,697
  • 5
  • 13
  • 29
Chris
  • 11
  • 1

0 Answers0