g_BonE Posted November 21, 2008 Share Posted November 21, 2008 (edited) hi folks: this i what im currently using to check standby messages from windows and react on them: expandcollapse popup#include "au3_inc\GuiConstantsEx.au3" $logfile = @ScriptDir&"\mp_standby-hook.log" $delystdby = 30 ;seconds to delay standby $mes = "" Global $WM_POWERBROADCAST = 536 Global $PBT_APMQUERYSUSPEND = 0x0000 Global $PBT_APMQUERYSTANDBY = 0x0001 Global $PBT_APMQUERYSUSPENDFAILED = 0x0002 Global $PBT_APMQUERYSTANDBYFAILED = 0x0003 Global $PBT_APMSUSPEND = 0x0004 Global $PBT_APMSTANDBY = 0x0005 Global $PBT_APMRESUMECRITICAL = 0x0006 Global $PBT_APMRESUMESUSPEND = 0x0007 Global $PBT_APMRESUMESTANDBY = 0x0008 Global $PBT_APMBATTERYLOW = 0x0009 Global $PBT_APMPOWERSTATUSCHANGE = 0x000A Global $PBT_APMOEMEVENT = 0x000B Global $PBT_APMRESUMEAUTOMATIC = 0x0012 Global $PBTF_APMRESUMEFROMFAILURE = 0x00000001 Global $ES_DISPLAY_REQUIRED = 0x00000002; zero the display's idle timer Global $ES_SYSTEM_REQUIRED = 0x00000001; zero the system's idle timer Global $ES_CONTINUOUS = 0x80000000; keep the display or system on (doesn't work?) $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 $GUIMsg = GUIGetMsg() Switch $GUIMsg Case $GUI_EVENT_CLOSE ExitLoop EndSwitch Sleep (60000) ; Sleep for a minute WEnd Func Standby($hWnd, $Msg, $wParam, $lParam) Switch $wParam Case $PBT_APMQUERYSUSPEND ; gets called first on standby request WriteToLog("PBT_APMQUERYSUSPEND received...") For $i=$delystdby to 1 Step -1 DllCall("kernel32.dll","int","SetThreadExecutionState","int", $ES_SYSTEM_REQUIRED) WriteToLog("Delaying Standby: "&$i&" s.") Sleep(1000) Next Case $PBT_APMSUSPEND ; gets called second on standby request WriteToLog("PBT_APMSUSPEND received...") WriteToLog("Entering Standby...") Case $PBT_APMRESUMEAUTOMATIC ; gets called first after resume WriteToLog("PBT_APMRESUMEAUTOMATIC received...") WriteToLog("Resuming from Standby..." Case $PBT_APMRESUMESUSPEND ; gets called second after resume WriteToLog("PBT_APMRESUMESUSPEND received...") WriteToLog("Checking MediaPortal...") Sleep(5000) If Not ProcessExists("mediaportal.exe") Then Run("c:\_mp\mediaportal.exe","c:\_mp") EndIf Sleep(5000) WriteToLog("Running RTC updater...") ShellExecute("timeupdate.au3","","c:\_tvtools\") Sleep(5000) WriteToLog("Faking user interaction...") $pos = MouseGetPos() MouseMove($pos[0]+50, $pos[1]+50) MouseMove($pos[0]-50, $pos[1]-50) MouseMove($pos[0], $pos[1]) Case $PBT_APMQUERYSTANDBY WriteToLog("PBT_APMQUERYSTANDBY received...") Case $PBT_APMQUERYSUSPENDFAILED WriteToLog("PBT_APMQUERYSUSPENDFAILED received...") Case $PBT_APMQUERYSTANDBYFAILED WriteToLog("PBT_APMQUERYSTANDBYFAILED received...") Case $PBT_APMRESUMECRITICAL WriteToLog("PBT_APMRESUMECRITICAL received...") Case $PBT_APMRESUMESTANDBY WriteToLog("PBT_APMRESUMESTANDBY received...") Case $PBT_APMSTANDBY WriteToLog("PBT_APMSTANDBY received...") Case $PBT_APMPOWERSTATUSCHANGE WriteToLog("PBT_APMPOWERSTATUSCHANGE received...") Case $PBT_APMOEMEVENT WriteToLog("PBT_APMOEMEVENT received...") Case Else WriteToLog("Some unknown standby related message received... WTF?") EndSwitch EndFunc Func WriteToLog($mes) $file=FileOpen($logfile,1) FileWrite($logfile,@MDAY&@MON&@YEAR&"-"&@HOUR&@MIN&@SEC&": "&$mes&@CRLF) FileClose($logfile) Endfunc ...i could use some guide on optimizing this baby and also maybe some of you API gods might help on how i could send the BROADCAST_QUERY_DENY message instead of using SetThreadExecutionState if it's feasible? Also if someone can show me how i can react on System booting and shutting down events ? Thanks in advance... g_ Edited November 21, 2008 by g_BonE ...Fenster fährt mich Nüsse... Link to comment Share on other sites More sharing options...
g_BonE Posted November 22, 2008 Author Share Posted November 22, 2008 what... nobody ? and i thought its such a nice example of what can be done with autoit ...i could use some guide on optimizing this baby and also maybe some of you API gods might help on how i could send the BROADCAST_QUERY_DENY message instead of using SetThreadExecutionState if it's feasible? Also if someone can show me how i can react on System booting and shutting down events ?Thanks in advance...g_ ...Fenster fährt mich Nüsse... Link to comment Share on other sites More sharing options...
g_BonE Posted November 22, 2008 Author Share Posted November 22, 2008 To get the info that system is rebooting i now use a OnAutoItExit() function and look at the @ExitMethod to be equal to 4. Func OnAutoItExit() Switch @EXITMETHOD Case 1 WriteToLog($g_szVersion&" exited by Close...") Case 2 WriteToLog($g_szVersion&" exited by SysTray...") Case 3 WriteToLog($g_szVersion&" exited by LogOff...") Case 4 WriteToLog($g_szVersion&" exited by Reboot...") WriteToLog("Rebooting system...") EndSwitch EndFunc ...Fenster fährt mich Nüsse... Link to comment Share on other sites More sharing options...
g_BonE Posted December 9, 2008 Author Share Posted December 9, 2008 Just to bump this one up once more... i'm still looking for a way to send the BROADCAST_QUERY_DENY message via API. Anyone ?!? ...Fenster fährt mich Nüsse... Link to comment Share on other sites More sharing options...
rasim Posted December 9, 2008 Share Posted December 9, 2008 g_BonEHow to prevent from the suspend message?Just return the $BROADCAST_QUERY_DENY value.Global Const $WM_POWERBROADCAST = 0x0218 Global Const $PBT_APMQUERYSUSPEND = 0x0000 Global Const $BROADCAST_QUERY_DENY = 0x424D5144 HotKeySet("{Pause}", "_Exit") $hGUI = GUICreate("Test GUI") $TestButton = GUICtrlCreateButton("Test", 60, 37, 75, 23) GUIRegisterMsg($WM_POWERBROADCAST, "WM_POWERBROADCAST") While 1 Sleep(100) WEnd Func WM_POWERBROADCAST($hWnd, $Msg, $wParam, $lParam) Switch $wParam Case $PBT_APMQUERYSUSPEND Return $BROADCAST_QUERY_DENY EndSwitch EndFunc Func _Exit() Exit EndFunc Link to comment Share on other sites More sharing options...
ScriptingIT Posted December 14, 2008 Share Posted December 14, 2008 The first bit of code is really useful thanks. Follow ups are good also. I'm interested in making an energy usage measuring tool. Happy to post anything useful anyone already working on such a project? Link to comment Share on other sites More sharing options...
g_BonE Posted December 16, 2008 Author Share Posted December 16, 2008 thanks rasim, that was exactly what i'd been looking for. where did you get the hex number for $BROADCAST_QUERY_DENY = 0x424D5144 from ? ...Fenster fährt mich Nüsse... Link to comment Share on other sites More sharing options...
passkalilo Posted May 29, 2009 Share Posted May 29, 2009 Very Thanks ,this is what i needed Link to comment Share on other sites More sharing options...
Raik Posted December 2, 2010 Share Posted December 2, 2010 @rasim does this work too for pushing the powerbutton, or only for system-powersaving-events? if someone pushes the powerbutton 4 seconds, its not preventable, right? (because a bios-routine is called) AutoIt-Syntaxsheme for Proton & Phase5 * Firefox Addons by me (resizable Textarea 0.1d) (docked JS-Console 0.1.1) Link to comment Share on other sites More sharing options...
AdmiralAlkex Posted December 2, 2010 Share Posted December 2, 2010 @rasimdoes this work too for pushing the powerbutton, or only for system-powersaving-events?if someone pushes the powerbutton 4 seconds, its not preventable, right? (because a bios-routine is called)Are you trying to be funny or something? Someone who was last seen 2 years ago is not going to answer. .Some of my scripts: ShiftER, Codec-Control, Resolution switcher for HTC ShiftSome of my UDFs: SDL UDF, SetDefaultDllDirectories, Converting GDI+ Bitmap/Image to SDL Surface Link to comment Share on other sites More sharing options...
Raik Posted December 2, 2010 Share Posted December 2, 2010 Are you trying to be funny or something? Someone who was last seen 2 years ago is not going to answer.oh :-Omaybe, someone other knows the answer? possibly you? AutoIt-Syntaxsheme for Proton & Phase5 * Firefox Addons by me (resizable Textarea 0.1d) (docked JS-Console 0.1.1) Link to comment Share on other sites More sharing options...
AdmiralAlkex Posted December 3, 2010 Share Posted December 3, 2010 I agree that the 4 second thing is probably done by the motherboard somehow. Don't know about a shirt press, why don't you try? PS See when someone was last on line on the left side of their profile (click their name) .Some of my scripts: ShiftER, Codec-Control, Resolution switcher for HTC ShiftSome of my UDFs: SDL UDF, SetDefaultDllDirectories, Converting GDI+ Bitmap/Image to SDL Surface Link to comment Share on other sites More sharing options...
Raik Posted December 9, 2010 Share Posted December 9, 2010 short press on powerbutton will trigger shutdown (depends on the settings). this i may supress. only the long press i probatly can't. AutoIt-Syntaxsheme for Proton & Phase5 * Firefox Addons by me (resizable Textarea 0.1d) (docked JS-Console 0.1.1) Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now