Powershell code om je monitor uit te schakelen (let op, dit roept zogenaamde unmanaged code aan, script heb ik even snel in elkaar gezet net dus het is niet uitgebreid getest, op mijn Windows 10 v1803 machine werkt dit)
PowerShell:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| $Domain = [System.AppDomain]::CurrentDomain
$AssemblyName = [System.Reflection.AssemblyName]::new('Messages')
$Assembly = $Domain.DefineDynamicAssembly($AssemblyName,'Run')
$ModuleBuilder = $Assembly.DefineDynamicModule('Messages')
# Define the class that will hold the PInvoke method
$MessageClass = $ModuleBuilder.DefineType('Messages','Public')
# Define the PInvoke Method
$SendMessage = $MessageClass.DefinePInvokeMethod(
'SendMessageW',
'User32.dll',
@('Public','Static','PinvokeImpl'),
[System.Reflection.CallingConventions]::Standard,
[System.IntPtr],
@([System.IntPtr],[Uint32],[System.IntPtr],[System.IntPtr]),
[System.Runtime.InteropServices.CallingConvention]::Winapi,
[System.Runtime.InteropServices.CharSet]::Unicode
)
[void]$SendMessage.DefineParameter(1,'In','hWnd')
[void]$SendMessage.DefineParameter(2,'In','Msg')
[void]$SendMessage.DefineParameter(3,'In','wParam')
[void]$SendMessage.DefineParameter(4,'In','lParam')
[void]$SendMessage.SetImplementationFlags($SendMessage.GetMethodImplementationFlags() -bor [System.Reflection.MethodImplAttributes]::PreserveSig)
[void]$MessageClass.CreateType()
$WM_SYSCOMMAND = 0x0112
$SC_MONITORPOWER = 0xF170
$POWER_OFF = 2
$POWER_ON = -1
[messages]::SendMessageW(0xffff,$WM_SYSCOMMAND,$SC_MONITORPOWER,$POWER_OFF) |
Dit zou je in een scheduled task kunnen gooien, ik verwacht dat dit alleen werkt voor de logged on user (dus je kunt het niet schedulen onder een andere user als degene die ingelogd is).
Ik heb de waarde voor powerOn wel in het script geplaatst, echter werkt dit niet meer in Windows 10.
Om het scherm weer aan te zetten zou je een simpel script kunnen gebruiken die bv SendKeys doet (keystoke verzenden) of bv gescript de muis een x aantal pixels laten moven.
Voorbeeld :
PowerShell:
1
2
| Add-Type -AssemblyName System.Windows.Forms # load the Winforms Assembly
[System.Windows.Forms.SendKeys]::SendWait(" ") # Send a space |
[
Voor 2% gewijzigd door
Killah_Priest op 24-05-2018 23:02
. Reden: spelfouten ]