| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- #include "stdafx.h"
- #include "PowerManager.h"
- #include "Misc.h"
- static HWND s_notifyHwnd;
- static ULONG PowerChanged(PVOID Context, ULONG Type, PVOID Setting);
- ULONG PowerChanged(PVOID Context, ULONG Type, PVOID Setting)
- {
- //a
- //b
- //c
- CString cs;
- cs.Format(_T("PowerChanged Type %d"), Type);
- Log(cs);
- if(Type == PBT_APMRESUMEAUTOMATIC)
- {
- //had reports of the main window not showing clips after resuming (report was from a vmware vm), catch the resuming callback from windows
- //and close and reopen the database
- Log(_T("windows is RESUMING, sending message to main window to close and reopen the database/qpastewnd"));
- ::PostMessage(s_notifyHwnd, WM_REOPEN_DATABASE, 0, 0);
- }
- return 0;
- }
- CPowerManager::CPowerManager()
- {
- m_registrationHandle = 0;
- }
- CPowerManager::~CPowerManager(void)
- {
- }
- void CPowerManager::Start(HWND hWnd)
- {
- s_notifyHwnd = hWnd;
- HMODULE powrprof = LoadLibrary( _T("powrprof.dll") );
- if( powrprof != NULL )
- {
- DWORD (_stdcall*PowerRegisterSuspendResumeNotification)(_In_ DWORD,_In_ HANDLE,_Out_ PHPOWERNOTIFY);
- PowerRegisterSuspendResumeNotification = (DWORD(_stdcall*)(_In_ DWORD,_In_ HANDLE,_Out_ PHPOWERNOTIFY))GetProcAddress(powrprof, "PowerRegisterSuspendResumeNotification");
- if(PowerRegisterSuspendResumeNotification)
- {
- static _DEVICE_NOTIFY_SUBSCRIBE_PARAMETERS testCallback = {PowerChanged, nullptr};
- PowerRegisterSuspendResumeNotification(DEVICE_NOTIFY_CALLBACK, &testCallback, &m_registrationHandle);
- }
- ::FreeLibrary(powrprof);
- }
- }
- void CPowerManager::Close()
- {
- if(m_registrationHandle != 0)
- {
- HMODULE powrprof = LoadLibrary( _T("powrprof.dll") );
- if( powrprof != NULL )
- {
- DWORD (_stdcall*PowerUnregisterSuspendResumeNotification)(_Inout_ PHPOWERNOTIFY);
- PowerUnregisterSuspendResumeNotification = (DWORD(_stdcall*)(_Inout_ PHPOWERNOTIFY))GetProcAddress(powrprof, "PowerUnregisterSuspendResumeNotification");
- if(PowerUnregisterSuspendResumeNotification)
- {
- PowerUnregisterSuspendResumeNotification(&m_registrationHandle);
- }
- ::FreeLibrary(powrprof);
- }
- }
- }
|