Jump to content

Script execution stops when monitor is turned off by script


AuScripter
 Share

Recommended Posts

Hi,

I'm trying to create a script that runs in the background while turning off the monitor. Unfortunately, the script execution stops when the monitor is off. I wish, however, that the script will continue.

This is an example of my implementation:

 

#include <File.au3>

Global Const $lciWM_SYSCommand = 274
Global Const $lciSC_MonitorPower = 61808
Global Const $lciPower_Off = 2
Global Const $lciPower_On = -1

Global $LogFileName = @ScriptDir & "\MonitorOffTest.log"
HotKeySet("^q", "QuitScript")

WriteLog("Start script")
Sleep(5000)
_Monitor(0)
WriteLog("Monitor off")

$Run = True
While $Run
    WriteLog("Main loop")
    Sleep(5000)
WEnd

Func WriteLog($logtext)
    Local $hFile = FileOpen($LogFileName, 1)
    _FileWriteLog($hFile, $logtext)
    FileClose($hFile)
EndFunc

Func _Monitor($run = 1)
    Local $Progman_hwnd = WinGetHandle('[CLASS:Progman]')

    If $run = 0 Then
        ; BlockInput(1)
        DllCall('user32.dll', 'int', 'SendMessage', _
                'hwnd', $Progman_hwnd, _
                'int', $lciWM_SYSCommand, _
                'int', $lciSC_MonitorPower, _
                'int', $lciPower_Off)
        Return 1
    ElseIf $run = 1 Then
        ; BlockInput(0)
        DllCall('user32.dll', 'int', 'SendMessage', _
                'hwnd', $Progman_hwnd, _
                'int', $lciWM_SYSCommand, _
                'int', $lciSC_MonitorPower, _
                'int', $lciPower_On)
        Return 1
    EndIf
    Return 0
EndFunc

Func QuitScript()
    WriteLog("Quit script")
    $Run = False
EndFunc

 

It creates log entries as follows:

2019-01-11 14:00:58 : Start script
2019-01-11 14:01:03 : Monitor off
2019-01-11 14:01:03 : Main loop
2019-01-11 14:06:24 : Main loop
2019-01-11 14:06:29 : Main loop
2019-01-11 14:06:32 : Quit script

As you can see, nothing is logged when the monitor is off. After moving the mouse, it is running again.

Who has a hint for me how to make sure that the monitor is off, but the script and all other processes on the computer are still running?

Btw: The computer I'm testing with is a Surface 3

Link to comment
Share on other sites

  • Moderators

Obvious question, why do you need to turn the monitor off in order to run your script?

===In case you missed it, this is a Mod stepping into a thread===

"Profanity is the last vestige of the feeble mind. For the man who cannot express himself forcibly through intellect must do so through shock and awe" - Spencer W. Kimball

How to get your question answered on this forum!

Link to comment
Share on other sites

Tried it. The same result:

2019-01-11 15:51:57 : Start script
2019-01-11 15:52:02 : Monitor off
2019-01-11 15:52:02 : Main loop
2019-01-11 15:52:07 : Main loop
2019-01-11 15:52:12 : Main loop
2019-01-11 15:55:33 : Main loop
2019-01-11 15:55:38 : Main loop
2019-01-11 15:55:43 : Main loop
2019-01-11 15:55:48 : Main loop
2019-01-11 15:55:53 : Main loop
2019-01-11 15:55:58 : Main loop
2019-01-11 15:56:03 : Main loop
2019-01-11 15:56:08 : Quit script

The loop stops after three passes (red) and will not resume until the computer is re-activated with the mouse (green).

Link to comment
Share on other sites

  • 3 months later...

@AuScripter The best I found was using GDI+ to create a black overlay to hide that my screen was on. I used this as a template. Both Windows 7 and 10 seem to do this 😕

 

(FYI: I'm downloading invoices at work and my monitor heats up and does the old TV thing of "staining" pixels for a short while.)

All my code provided is Public Domain... but it may not work. ;) Use it, change it, break it, whatever you want.

Spoiler

My Humble Contributions:
Personal Function Documentation - A personal HelpFile for your functions
Acro.au3 UDF - Automating Acrobat Pro
ToDo Finder - Find #ToDo: lines in your scripts
UI-SimpleWrappers UDF - Use UI Automation more Simply-er
KeePass UDF - Automate KeePass, a password manager
InputBoxes - Simple Input boxes for various variable types

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...