Click here to Skip to main content
15,921,203 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: Creating un-fragmented files Pin
Bob Stanneveld23-Jul-03 12:38
Bob Stanneveld23-Jul-03 12:38 
GeneralRe: Creating un-fragmented files Pin
Ryan Binns23-Jul-03 16:06
Ryan Binns23-Jul-03 16:06 
GeneralRe: Creating un-fragmented files Pin
Anders Molin23-Jul-03 13:41
professionalAnders Molin23-Jul-03 13:41 
GeneralRe: Creating un-fragmented files Pin
FlyingDancer23-Jul-03 15:04
FlyingDancer23-Jul-03 15:04 
GeneralRe: Creating un-fragmented files Pin
Ryan Binns23-Jul-03 16:05
Ryan Binns23-Jul-03 16:05 
GeneralRe: Creating un-fragmented files Pin
od@ananzi.co.za23-Jul-03 21:03
od@ananzi.co.za23-Jul-03 21:03 
GeneralAuto application logout Pin
Andrew Allen23-Jul-03 8:54
Andrew Allen23-Jul-03 8:54 
GeneralRe: Auto application logout Pin
John M. Drescher23-Jul-03 9:21
John M. Drescher23-Jul-03 9:21 
I did this with an application wide keyboard and mouse hook. Let me see if I can dig up the code.

class CActivity
{
public:
CActivity();
virtual ~CActivity();
public:
static DWORD GetLastActivity();
static void SetLastActivity(DWORD dwActivity);
public:
static DWORD m_dwLastActivity;
static HANDLE m_hMutex;
};

extern CActivity g_Activity;

template<BYTE nID>
class CInactivityHook
{
public:
CInactivityHook();
virtual ~CInactivityHook();
public:
BOOL Start(DWORD dwThreadID);
BOOL Stop();

protected:
static LRESULT CALLBACK MyKeyHookFunc(int code, WPARAM wParam, LPARAM lParam);
static LRESULT CALLBACK MyMouHookFunc(int code, WPARAM wParam, LPARAM lParam);
protected:
static HHOOK m_hMyKeyHook;
static HHOOK m_hMyMouseHook;
};

template<BYTE nID>
HHOOK CInactivityHook<nID>::m_hMyKeyHook=NULL;

template<BYTE nID>
HHOOK CInactivityHook<nID>::m_hMyMouseHook=NULL;

template<BYTE nID>
CInactivityHook<nID>::CInactivityHook()
{
g_Activity.SetLastActivity(::GetCurrentTime());
m_hMyKeyHook=0;
m_hMyMouseHook=0;
}

template<BYTE nID>
CInactivityHook<nID>::~CInactivityHook()
{
Stop();
}

template<BYTE nID>
CInactivityHook<nID>::Stop()
{
if ( m_hMyKeyHook) {
UnhookWindowsHookEx( m_hMyKeyHook );
m_hMyKeyHook = NULL;
}
if ( m_hMyMouseHook) {
UnhookWindowsHookEx( m_hMyMouseHook );
m_hMyMouseHook = NULL;
}
return TRUE;
}

template<BYTE nID>
CInactivityHook<nID>::Start(DWORD dwThreadID)
{
if ( !m_hMyKeyHook) {
m_hMyKeyHook= SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)MyKeyHookFunc, AfxGetInstanceHandle(),
(DWORD)dwThreadID);
}
if ( !m_hMyMouseHook) {
m_hMyMouseHook= SetWindowsHookEx(WH_MOUSE, (HOOKPROC)MyMouHookFunc, AfxGetInstanceHandle(),
(DWORD)dwThreadID);
}
return TRUE;
}

template<BYTE nID>
LRESULT CALLBACK CInactivityHook<nID>::MyKeyHookFunc(int code, WPARAM wParam, LPARAM lParam)
{
CActivity::SetLastActivity(::GetCurrentTime());
return CallNextHookEx( m_hMyKeyHook, code, wParam, lParam);
}

template<BYTE nID>
LRESULT CALLBACK CInactivityHook<nID>::MyMouHookFunc(int code, WPARAM wParam, LPARAM lParam)
{
CActivity::SetLastActivity(::GetCurrentTime());
return CallNextHookEx( m_hMyMouseHook, code, wParam, lParam);
}

///////
// now in my cview


CInactivityHook<0> CommonViewInactivity;

void CCommonView::EnableInactivityHook( BOOL fEnable )
{
CommonViewInactivity.Start(::GetCurrentThreadId());
SetTimer(DONE_DIGITIZING_TIMER,1000,NULL);
CActivity::SetLastActivity(::GetCurrentTime());
}

void CCommonView::OnTimer(UINT nIDEvent)
{
if ( nIDEvent == DONE_DIGITIZING_TIMER) {
// calculate difference between current time and time stored in CActivity::GetLastActivity();

}
}



John
GeneralRe: Auto application logout Pin
Ryan Binns23-Jul-03 18:55
Ryan Binns23-Jul-03 18:55 
GeneralRe: Auto application logout Pin
John M. Drescher23-Jul-03 19:14
John M. Drescher23-Jul-03 19:14 
Generalqualifying enums ... Pin
Maximilien23-Jul-03 8:32
Maximilien23-Jul-03 8:32 
GeneralRe: qualifying enums ... Pin
Nathan Blomquist23-Jul-03 8:43
Nathan Blomquist23-Jul-03 8:43 
GeneralRe: qualifying enums ... Pin
QuiJohn23-Jul-03 8:55
QuiJohn23-Jul-03 8:55 
GeneralRe: qualifying enums ... Pin
John M. Drescher23-Jul-03 9:12
John M. Drescher23-Jul-03 9:12 
GeneralRe: qualifying enums ... Pin
QuiJohn23-Jul-03 9:20
QuiJohn23-Jul-03 9:20 
GeneralRe: qualifying enums ... Pin
Maximilien23-Jul-03 9:13
Maximilien23-Jul-03 9:13 
GeneralRe: qualifying enums ... Pin
Tom Archer23-Jul-03 9:49
Tom Archer23-Jul-03 9:49 
GeneralRe: qualifying enums ... Pin
Nathan Blomquist24-Jul-03 1:52
Nathan Blomquist24-Jul-03 1:52 
GeneralRe: qualifying enums ... Pin
Tom Archer24-Jul-03 2:08
Tom Archer24-Jul-03 2:08 
GeneralRe: qualifying enums ... Pin
User 665823-Jul-03 9:17
User 665823-Jul-03 9:17 
Generaldisplaying images Pin
Cyberizen23-Jul-03 7:55
Cyberizen23-Jul-03 7:55 
GeneralRe: displaying images Pin
John M. Drescher23-Jul-03 9:13
John M. Drescher23-Jul-03 9:13 
GeneralRe: displaying images Pin
Alexander M.,23-Jul-03 9:13
Alexander M.,23-Jul-03 9:13 
GeneralDialogBar to View communication question Pin
hiseldl23-Jul-03 7:38
hiseldl23-Jul-03 7:38 
GeneralRe: DialogBar to View communication question Pin
RobJones23-Jul-03 8:23
RobJones23-Jul-03 8:23 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.