;#NoTrayIcon ;#SingleInstance, Force #include "GuiConstantsEx.au3" $logfile = @ScriptDir&"\mp_standby-hook.log" Global $WM_POWERBROADCAST = 0x218 Global $PBT_APMRESUMESUSPEND = 0x0007 Global $PBT_APMRESUMESTANDBY = 0x0008 Global $PBT_APMRESUMEAUTOMATIC = 0x0012 $hGUI = GUICreate("Standby", 1,1,1,1,-1) GUIRegisterMsg($WM_POWERBROADCAST, "Standby") ;hook into win32 pm API GUISetState(@SW_MINIMIZE,$hGUI) $g_szVersion = "MP_StandBy-Hook" If WinExists($g_szVersion) Then Exit ; It's already running AutoItWinSetTitle($g_szVersion) WriteToLog($g_szVersion&" started...") While 1 Sleep (60000) ; Sleep for a minute WEnd Func Standby($hWnd, $Msg, $wParam, $lParam) Switch $wParam Case $PBT_APMRESUMEAUTOMATIC WriteToLog("PBT_APMRESUMEAUTOMATIC received...") WriteToLog("Resuming from Standby...") PressMonitor() Case $PBT_APMRESUMESUSPEND WriteToLog("PBT_APMRESUMESUSPEND received...") WriteToLog("Resuming from Standby...") PressMonitor() Case $PBT_APMRESUMESTANDBY WriteToLog("PBT_APMRESUMESTANDBY received...") WriteToLog("Resuming from Standby...") PressMonitor() Case Else WriteToLog("Some unknown standby related message received, wParam: " & $wParam) EndSwitch EndFunc Func WriteToLog($mes) $file=FileOpen($logfile,1) FileWrite($logfile,@MDAY&@MON&@YEAR&"-"&@HOUR&@MIN&@SEC&": "&$mes&@CRLF) FileClose($logfile) Endfunc Func IsVGAMonitor() $a = ControlCommand("Systemsteuerung\Darstellung und Anpassung\Anzeige\Bildschirmauflösung", "Bildschirmauflösung", "ComboBox1", "GetCurrentSelection", "") return StringInStr($a, "VGA") EndFunc Func PressMonitor() $retryCtr = 1 $maxRetries = 30 $sleepTime = 5000 Sleep($sleepTime) WriteToLog("Check if VGA Monitor is set.") WriteToLog("Open Bildschirmauflösung.") Run("rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3") Winwait("Systemsteuerung\Darstellung und Anpassung\Anzeige\Bildschirmauflösung", "Bildschirmauflösung") if IsVGAMonitor() Then $displayFound = False WriteToLog("VGA Monitor found.") Else $displayFound = True WriteToLog("Non VGA Monitor found.") EndIf While ($retryCtr <= $maxRetries) AND (not $displayFound) WriteToLog("Click Erkennen.") ControlClick("Systemsteuerung\Darstellung und Anpassung\Anzeige\Bildschirmauflösung", "Bildschirmauflösung", "Button1") Sleep($sleepTime) if Not IsVGAMonitor() Then WriteToLog("Non VGA Monitor found.") $displayFound = True Else WriteToLog("VGA Monitor found.") EndIf $retryCtr += 1 WEnd WriteToLog("Close Bildschirmauflösung.") ControlClick("Systemsteuerung\Darstellung und Anpassung\Anzeige\Bildschirmauflösung", "Bildschirmauflösung", "Button4") EndFunc