Я написал код в OnTimer(), который называется каждые 100 мс, и дайте мне время, приложение простаивают здесь кодGetLastInputInfo() дает правильное время
void MyAppView::OnTimer(UINT_PTR nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if(nIDEvent == 3)
{
// Get the last input event info.
LASTINPUTINFO li;
li.cbSize = sizeof(LASTINPUTINFO);
::GetLastInputInfo(&li);
// Calculate the time elapsed in seconds.
DWORD te = ::GetTickCount();
int elapsed = (te - li.dwTime)/100;
// Test against a preset timeout period in
// seconds.
if(5000 < elapsed)
{
// Call a function or set an application flag
// that can be acted on outside this function.
AfxMessageBox(_T("This session has timeout"));
}
}
}
Я не знаю, Что в этом коде не так, но я получаю истекшее = 0 каждый раз. Пожалуйста, дайте мне знать, где я иду не так. Спасибо заранее.
Вы уверены, что полная система не получал вход в 500 секунд? GetLastInputInfo является системным! – xMRi
Когда вы выполняете этот код в отладчике, вы будете производить ввод, сбросив счетчик простоя. Попробуйте установить точку [tracepoint] (http://msdn.microsoft.com/en-us/library/232dxah7 (v = vs.90) .aspx) вместо точки останова. В коде нет ничего очевидного. – IInspectable