Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице. Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.
29-12-2006 06:51 | Комментарий к предыдущим ответам
dwTime
Tick count when the last input event was received.
То есть это не время прошедшее от последнего дёрганья мышкой, а момент времени в который это произошло. Вобщем как-то так:
then if GetTickCount - delta.dwTime > MaxIdle then Close;
Я вот такую функцию использую, под 9x она конечно всегда возвращает GetTickCount, но ставить ради такой фигни хуки, мне кажется неуместным:
function GetLastInputTime:DWORD;
var
LI:TLastInputInfo;
const
GetLastInputInfo:function(var plii:TLastInputInfo):BOOL;stdcall=nil;
function _GetLastInputInfo(var plii:TLastInputInfo):BOOL; stdcall;
begin
plii.dwTime:=GetTickCount;
Result:=plii.cbSize=SizeOf(TLastInputInfo);
end;
begin
if not Assigned(GetLastInputInfo) then begin
GetLastInputInfo:=GetProcAddress(GetModuleHandle(user32),'GetLastInputInfo');
if not Assigned(GetLastInputInfo) then GetLastInputInfo:=@_GetLastInputInfo;
end;
LI.cbSize:=SizeOf(LI);
GetLastInputInfo(LI);
Result:=LI.dwTime;
end;
29-12-2006 05:53 | Вопрос к автору: запрос дополнительной информации
to DRON...
Прочитал по MSDN, сделал, как написано - ну ни фига не получилось..В dwTime возвращается просто умопомрачительное значение при success-ном вызове функции. Может пояснишь немного, или пример. Я делал вот так...
var
delta: tagLASTINPUTINFO;
begin
delta.cbSize := sizeof(tagLASTINPUTINFO);
if GetLastInputInfo(delta)
then if delta.dwTime > MaxIdle then Close;
end;
Зависит от того, что Вы считаете работой.
Можно обрабатывать Application.OnIdle.
Можно навесить хук и смотреть, когда пользователь последний раз пользовался клавиатурой или мышью.
Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter. Функция может не работать в некоторых версиях броузеров.