Hallo,
ich habe ein Windows 8 Tablet an der Wand hängen, das permanent läuft. Ein Server wertet einen Bewegungsmelder aus, der bei Zutreffen ein Programm mit Parametern ausführen soll.
Ich möchte quasi bei Bewegung im Raum eine Diashow anzeigen lassen. Diese ist über den Screensaver gelöst.
Folgendes: Ich kann den Bildschirmschoner aktivieren, ich kann den Monitor abschalten, all das klappt. Nur anschalten lässt er sich nicht. Könnte jemand mit Erfahrung mal drübersehen?
Laut MSDN geht das wie folgt: https://msdn.microsoft.com/en-us/library/…0(v=vs.85).aspx
Spoiler anzeigen
AutoIt: constants.au3
Global Const $listen_IP = IniRead("einstellungen.ini", "Netzwerk", "IP-Adresse", "127.0.0.1")
Global Const $listen_PORT = IniRead("einstellungen.ini", "Netzwerk", "IP-Adresse", "1989")
Global Const $CMD_SCREENSAVER = "cmd_bildschirmschoner"
Global Const $CMD_MONITOR_AN = "cmd_monitor_an"
Global Const $CMD_MONITOR_AUS = "cmd_monitor_aus"
;~ Global Const $CMD_MOUSE_MOVE = "cmd_mouse_move"
Spoiler anzeigen
AutoIt: miniserver.au3
#include "constants.au3"
#include <Constants.au3>
#NoTrayIcon
TCPStartup()
Local $ID_socket = TCPConnect($listen_IP, $listen_PORT)
If $CmdLine[0] >= 1 Then
Switch $CmdLine[1]
Case "-bildschirmschoner"
TCPSend($ID_socket, $CMD_SCREENSAVER)
Case "-an"
TCPSend($ID_socket, $CMD_MONITOR_AN)
Case "-aus"
TCPSend($ID_socket, $CMD_MONITOR_AUS)
Case Else
MsgBox(0,"Fehler", $CmdLine[1] & " ist kein gültiger Paramter")
EndSwitch
Else
MsgBox(0,"Fehler", "Parameter wird zwingend gebraucht" & @CRLF & @CRLF & "Bsp.:" & @CRLF & "miniserver.exe -bildschirmschoner" & @CRLF & "miniserver.exe -an" & @CRLF & "miniserver.exe -aus")
EndIf
TCPCloseSocket($ID_socket)
Alles anzeigen
Spoiler anzeigen
AutoIt: tablet.au3
#include "constants.au3"
#NoTrayIcon
TCPStartup()
Local $ID_socket = TCPListen($listen_IP, $listen_PORT, 100)
While True
Local $socket_established = -1
Local $socket_received_data = Null
Do
$socket_established = TCPAccept($ID_socket)
Sleep(100)
Until $socket_established <> -1
$socket_received_data = TCPRecv($socket_established, 1024)
TCPCloseSocket($socket_established)
_do($socket_received_data)
WEnd
Func _do($TCP_DATA)
Switch $TCP_DATA
Case $CMD_SCREENSAVER
Local $result = DllCall("user32.dll", "hwnd", "GetDesktopWindow")
DllCall("user32.dll", "lresult", "SendMessageW", "hwnd", $result[0], "uint", 0x0112, "wparam", 0xF140, "lparam", 0)
Case $CMD_MONITOR_AN
DllCall('user32.dll', 'int', 'SendMessage', 'hwnd', WinGetHandle('[CLASS:Progman]'), 'int', 0x0112, 'int', 0xF170, 'int', -1)
Case $CMD_MONITOR_AUS
DllCall('user32.dll', 'int', 'SendMessage', 'hwnd', WinGetHandle('[CLASS:Progman]'), 'int', 0x0112, 'int', 0xF170, 'int', 2)
EndSwitch
EndFunc
;~ https://msdn.microsoft.com/en-us/library/windows/desktop/ms646360(v=vs.85).aspx
Alles anzeigen
Arbeitet jemand mit DLLs & Autoit?