Задать вопрос

Как определить бездействие компьютера?

Есть ли возможность посмотреть занятость компьютера. Например человек забыл выключить комп - и через 30 минут бездействия программа выключает комп.

Как вообще определяется бездействие юзера?
  • Вопрос задан
  • 6140 просмотров
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 7
GavriKos
@GavriKos
У вас в вопросе две сущности - бездействие юзера и бездействие компа. Бездействие юзера определяется активностью мышки/клавиатуры +детекция фулскрина (фильм смотрит).

Компьютер сам по себе никогда не бездействует. В фоне может работать индексация диска, дефрагментация, антивирусы могут свою активность увеличить и прочее. Если у вас привязка только к 1с - детектите именно ее активность, и все.
Ответ написан
Комментировать
@asd111
В windows API есть функция GetLastInputInfo. Она показывает когда была последняя активность пользователя (мышка, клавиатура):

BOOL WINAPI GetLastInputInfo(
  _Out_  PLASTINPUTINFO plii
);


Указатель PLASTINPUTINFO внутри содержит переменную dwTime, которая показывает количество тиков:
typedef struct tagLASTINPUTINFO {
  UINT  cbSize;
  DWORD dwTime;
} LASTINPUTINFO, *PLASTINPUTINFO;


Delphi:

function SecondsIdle: DWord;
var
   liInfo: TLastInputInfo;
begin
   liInfo.cbSize := SizeOf(TLastInputInfo) ;
   GetLastInputInfo(liInfo) ;
   Result := (GetTickCount - liInfo.dwTime) DIV 1000;
end;

procedure TForm1.Timer1Timer(Sender: TObject) ;
begin
   Caption := Format('System IDLE last %d seconds', [SecondsIdle]) ;
end;


stackoverflow.com/questions/2212823/how-to-detect-...

delphi.about.com/od/adptips2004/a/bltip1104_4.htm

stackoverflow.com/questions/203384/how-to-tell-whe...

msdn.microsoft.com/en-us/library/ms646302%28VS.85%...
Ответ написан
Комментировать
FAT
@FAT
Developer
Один из вариантов как отсутствие нажатия клавиш и перемещения мыши, либо каких-либо действий других устройств, подключенных к компьтеру.
Ответ написан
Assargin
@Assargin
Перед ответом смотрю наличие ✔ в ваших вопросах
Бездействие юзера определяется по отсутствию активности средств ввода (клавиатуры, мыши), именно по такому принципу работают "хранители экрана".
Кстати, если надо именно включить компьютер - это сейчас успешно делается самой ОС, что в windows, что в Ubuntu - настраивается.
Если надо спрограммировать что-то своё - надо ловить события от клавиатуры и мыши, не поймали ничего за последние Ч единиц времени - запускаете своё действие.
Ответ написан
bk0011m
@bk0011m
Системный администратор
Бездействие определяется отсутствием прерываний от "внешних" устройств.
Работа программ, будь то формирование отчета в 1С - прерыванием не является. Если вам нужно выключать компьютер по завершению каких-то программ - используйте сторонний софт
Ответ написан
Комментировать
Chvalov
@Chvalov
Ну не хотел бы я себе такой программы, включу какой-то фильм длительностью 3 часа и придется три раза бегать и включать.
Или же пользователь поставит на ночь с пару сотен ГБ качать (Например сериал) с ожиданием что утром будет смотреть в HD и завтыкал что у него программа выключала в автозагрузке включена.

Нужно мониторить не только средства ввода но и сетевую активность (только нужна методика чтобы в тот момент когда выключала будет мониторить не обновлялся антивирус и другое ПО).

Также если же он просто включил фильм и смотрит то мониторить текущий спектр громкости.

Также можно определить есть ли кто то возле ПК если у пользователя есть ВЕБ камера или даже микрофон (Типа датчик движения будет)
Ответ написан
Комментировать
Важнее - для чего вообще надо искать подобное решение?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы