151 lines
3.5 KiB
C++
151 lines
3.5 KiB
C++
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1997.
|
|
//
|
|
// File: idle.h
|
|
//
|
|
// Contents: Idle notification routines.
|
|
//
|
|
// Classes:
|
|
//
|
|
// Notes:
|
|
//
|
|
// History: 23-Feb-98 rogerg Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
#ifndef _SYNCMGRIDLE_
|
|
#define _SYNCMGRIDLE_
|
|
|
|
// this is a copy of msidle.h routines we need since msidle.h is not defined in public
|
|
|
|
typedef void (WINAPI* _IDLECALLBACK) (DWORD dwState);
|
|
|
|
#define STATE_USER_IDLE_BEGIN 1
|
|
#define STATE_USER_IDLE_END 2
|
|
|
|
//
|
|
// BeginIdleDetection - start monitoring idleness
|
|
//
|
|
// pfnCallback - function to call back when idle state changes
|
|
// dwIdleMin - minutes of inactivity before idle callback
|
|
// dwReserved - must be 0
|
|
//
|
|
// Returns: 0 on success, error code on failure
|
|
//
|
|
// Note: Exported as ordinal 3
|
|
//
|
|
DWORD BeginIdleDetection(_IDLECALLBACK pfnCallback, DWORD dwIdleMin, DWORD dwReserved);
|
|
|
|
typedef DWORD (WINAPI* _BEGINIDLEDETECTION) (_IDLECALLBACK, DWORD, DWORD);
|
|
|
|
//
|
|
// EndIdleDetection - stop monitoring idleness
|
|
//
|
|
// Returns: TRUE on success, FALSE on failure
|
|
//
|
|
// Note: Exported as ordinal 4
|
|
//
|
|
BOOL EndIdleDetection(DWORD dwReserved);
|
|
|
|
typedef BOOL (WINAPI* _ENDIDLEDETECTION) (DWORD);
|
|
|
|
//
|
|
// SetIdleTimeout - Set minutes for idle timeout and reset idle state
|
|
//
|
|
// dwMinutes - new minutes threshold for idleness
|
|
// fResetState - flag to return to non-idle state to retrigger idle callback
|
|
// dwReserved - must be 0
|
|
//
|
|
// Note: Exported as ordinal 5
|
|
//
|
|
BOOL SetIdleTimeout(DWORD dwMinutes, DWORD dwReserved);
|
|
|
|
typedef BOOL (WINAPI* _SETIDLETIMEOUT) (DWORD, DWORD);
|
|
|
|
//
|
|
// SetIdleNotify - Turns on or off notification when idle
|
|
//
|
|
// fNotify - flag whether to notify or not
|
|
// dwReserved - must be 0
|
|
//
|
|
// Note: Exported as ordinal 6
|
|
//
|
|
void SetIdleNotify(BOOL fNotify, DWORD dwReserved);
|
|
|
|
typedef void (WINAPI* _SETIDLENOTIFY) (BOOL, DWORD);
|
|
|
|
//
|
|
// SetBusyNotify - Turns on or off notification when busy
|
|
//
|
|
// fNotify - flag whether to notify or not
|
|
// dwReserved - must be 0
|
|
//
|
|
// Note: Exported as ordinal 7
|
|
//
|
|
void SetBusyNotify(BOOL fNotify, DWORD dwReserved);
|
|
|
|
typedef void (WINAPI* _SETBUSYNOTIFY) (BOOL, DWORD);
|
|
|
|
//
|
|
// GetIdleMinutes
|
|
//
|
|
// dwReserved - must be 0
|
|
//
|
|
// Returns number of minutes since user's last activity
|
|
//
|
|
// Note: Exported as ordinal 8
|
|
//
|
|
DWORD GetIdleMinutes(DWORD dwReserved);
|
|
|
|
typedef DWORD (WINAPI* _GETIDLEMINUTES) (DWORD);
|
|
|
|
|
|
// end of msidle.h copy
|
|
|
|
class CProgressDlg;
|
|
|
|
void WINAPI IdleCallback(DWORD dwState); // callback for registering with Idle.
|
|
|
|
class CSyncMgrIdle
|
|
{
|
|
public:
|
|
CSyncMgrIdle();
|
|
~CSyncMgrIdle();
|
|
|
|
BOOL Initialize();
|
|
|
|
DWORD BeginIdleDetection(CProgressDlg *pProgressDlg,DWORD dwIdleMin, DWORD dwReserved);
|
|
DWORD ReRegisterIdleDetection(CProgressDlg *pProgressDlg);
|
|
DWORD ResetIdle(ULONG ulIdleRetryMinutes);
|
|
void OffIdle();
|
|
void OnIdle();
|
|
void CheckForIdle();
|
|
|
|
private:
|
|
BOOL LoadMsIdle();
|
|
|
|
HINSTANCE m_hInstMsIdleDll;
|
|
_BEGINIDLEDETECTION m_pBeginIdleDetection;
|
|
_ENDIDLEDETECTION m_pEndIdleDetection;
|
|
_GETIDLEMINUTES m_pGetIdleMinutes;
|
|
_SETBUSYNOTIFY m_pSetBusyNotify;
|
|
_SETIDLENOTIFY m_pSetIdleNotify;
|
|
_SETIDLETIMEOUT m_pSetIdleTimeout;
|
|
|
|
BOOL m_fInBeginIdleDetection;
|
|
DWORD_PTR m_dwRegisteredTimer;
|
|
BOOL m_fReceivedOffIdle;
|
|
CProgressDlg *m_pProgressDlg;
|
|
|
|
friend void WINAPI IdleCallback(DWORD dwState);
|
|
friend VOID CALLBACK IdleOnTimerProc(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime);
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif // _SYNCMGRIDLE_
|