PureBasic Forum
https://www.purebasic.fr/english/

How to detect Windows hibernation mode?
https://www.purebasic.fr/english/viewtopic.php?f=5&t=72788
Page 1 of 1

Author:  Marc56us [ Sat May 11, 2019 1:39 pm ]
Post subject:  How to detect Windows hibernation mode?

WM_QUERYENDSESSION detects the end of the session, but is it possible to detect the Windows hibernation ?

The reason: I would like to be able to stop the web radio and/or MP3 play of my programs (ACME Desk and ACME MediaPlayer) when the user clicks on Hibernation mode (Hibernation mode launch by Windows or by command: rundll32.exe powrprof.dll,SetSuspendState 1,0,1) Otherwise, the music will immediately resume from deep sleep.

:wink:

Author:  RSBasic [ Sat May 11, 2019 1:48 pm ]
Post subject:  Re: How to detect Windows hibernation mode?

Code:
EnableExplicit

Procedure WinCallback(hWnd, uMsg, wParam, lParam)
 
  Select uMsg
    Case #WM_POWERBROADCAST
      Select wParam
        Case #PBT_APMSUSPEND
          Debug "PC now goes into hibernation."
         
      EndSelect
  EndSelect
 
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
 
  SetWindowCallback(@WinCallback())
 
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf

Author:  Marc56us [ Sat May 11, 2019 2:05 pm ]
Post subject:  Re: How to detect Windows hibernation mode?

Thank you RSBasic, it works perfectly now 8)

:idea: A subsidiary question: Is there a way to interrupt (or pause some seconds) the start of this sleep mode while something is displayed?
:?: Maybe cancel the standby request completely, continue the program, then launch the software standby?
But I don't think Windows allows software to interrupt a stop command (as you can do under unix with shutdown)

(Put in extended sleep mode by command, I know how to do it with runprogram and rundll32.exe powrprof.dll,SetSuspendState 1,0,1)

Author:  Bitblazer [ Sat May 11, 2019 2:23 pm ]
Post subject:  Re: How to detect Windows hibernation mode?

In the past you could return #PWR_FAIL to abort the suspend, do stuff and later init suspend again. But it might not work with #WM_POWERBROADCAST anymore.

Author:  Marc56us [ Sat May 11, 2019 3:11 pm ]
Post subject:  Re: How to detect Windows hibernation mode?

Here, both programs are updated to stop the radio and/or MP3 playback if the user puts in hibernation mode.
On my computer (Windows 10 x64) it works :)

Thanks to PureBasic for making programming so easy and therefore so productive 8)

With small scripts (cmd), I compile (PB project mode), archive (7zip), package (InnoSetup 6) and update (WinSCP) my site in a few clicks. (less than 2 min)

Thanks to the whole PB community for all the advice given here over the years.

:wink:

http://mdacme.com
Note: Web Page fore ACME Media Player is in french (for the moment) but software is in french and english.

Page 1 of 1 All times are UTC + 1 hour
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/