Заставка будет включатся через 5 минут, соответственно это и будет считаться простоем. Допустим пользователь отошёл от компьютера на время более 5 минут, включилась заставка, и соответственно скрипт, пользователь пришёл обратно - увидел заставку, пошевелил мышкой - отключилась заставка и убился дефрагментатор.а каково значение времени между движениями\манипуляциями и простоем?
#include<WinAPI.au3>
#include<StructureConstants.au3>
#include<WindowsConstants.au3>
OnAutoItExitRegister("__Exit")
Global $trTime
$hStub=DllCallbackRegister("__Event","long","int;wparam;lparam")
$hModule=_WinAPI_GetModuleHandle(0)
$hHookM=_WinAPI_SetWindowsHookEx($wh_mouse_ll,DllCallbackGetPtr($hStub),$hModule)
While 1
Sleep(200)
$trTime+=200
If $trTime=(5*60*1000) Then
$trTime=0
ProcessWaitClose(Run("defrag.exe D:",'',@SW_HIDE))
EndIf
WEnd
Func __Event($nCode,$wPar,$lPar)
If $nCode<0 Then Return _WinAPI_CallNextHookEx($hHookM,$nCode,$wPar,$lPar)
Local $tKEY=BitAND($wPar,0xFFFF)
If $tKEY=$wm_mousemove Then
$trTime=0
ProcessClose("defrag.exe")
EndIf
EndFunc
Func __Exit()
_WinAPI_UnhookWindowsHookEx($hHookM)
DllCallbackFree($hStub)
EndFunc
Можно добавить директиву:junson сказал(а):Еще вопрос, можно ли как то скрыть значёк в трее?
#NoTrayicon
под ником стоят кнопки: "+1" и "-1"(у каждого пользователя кроме вашего, по причине того что вы не можете сами себе изменить репутацию) они означают добавить или снизить репутациюjunson сказал(а):как изменить репутацию на форуме? Не нашёл функции такой
Видимо новички не могут изменять репутацию, прочёл правила форума, нигде ничего не написано, пробовал разные броузеры, отключал adblock, заходил с другого компьютера. Так же я не могу отправлять личные сообщения, пишет "папка недоступна для вас". Спасибо в любом случае.под ником стоят кнопки: "+1" и "-1"
У меня и плюсы и минусы можно ставить и сообщения отправлять - всё нормально. Не знаю что у вас.Видимо новички не могут изменять репутацию, прочёл правила форума, нигде ничего не написано, пробовал разные броузеры, отключал adblock, заходил с другого компьютера. Так же я не могу отправлять личные сообщения, пишет "папка недоступна для вас". Спасибо в любом случае.
#include <Timers.au3>
#include <Date.au3>
$Idle = 60 ; время бездействия в секундах
While 1
Sleep(1000)
If _Timer_GetIdleTime() > $Idle * 1000 Then
FileWriteLine("log.txt", "Начало простоя: " & @UserName & " " & _DateAdd("s", -1 * $Idle, _NowCalc()))
Do
Sleep(1000)
Until _Timer_GetIdleTime() < $Idle * 1000
FileWriteLine("log.txt", "Завершение простоя: " & @UserName & " " & _NowCalc())
EndIf
WEnd
Апну тему. А как здесь сделать несколько условий срабатывания? Движение мыши, нажатие на кнопки и скролл колесика, набор на клавиатуре. При открытом окне, например диспетчере задач, запрет запуска. Или чтоб срабатывало только при открытом окне и движении мыши. Спасибо заранееКод:#include<WinAPI.au3> #include<StructureConstants.au3> #include<WindowsConstants.au3> OnAutoItExitRegister("__Exit") Global $trTime $hStub=DllCallbackRegister("__Event","long","int;wparam;lparam") $hModule=_WinAPI_GetModuleHandle(0) $hHookM=_WinAPI_SetWindowsHookEx($wh_mouse_ll,DllCallbackGetPtr($hStub),$hModule) While 1 Sleep(200) $trTime+=200 If $trTime=(5*60*1000) Then $trTime=0 ProcessWaitClose(Run("defrag.exe D:",'',@SW_HIDE)) EndIf WEnd Func __Event($nCode,$wPar,$lPar) If $nCode<0 Then Return _WinAPI_CallNextHookEx($hHookM,$nCode,$wPar,$lPar) Local $tKEY=BitAND($wPar,0xFFFF) If $tKEY=$wm_mousemove Then $trTime=0 ProcessClose("defrag.exe") EndIf EndFunc Func __Exit() _WinAPI_UnhookWindowsHookEx($hHookM) DllCallbackFree($hStub) EndFunc
Вроде бы работает, по ProcessHacker следил, вроде запускается(defrag), но у меня win8 и из-за скрытия окна, я понять не могу то ли дефрагментатор работает то ли нет.
+ еще проблема, если запускать системный(как в моем коде) дефрагментатор. То он требует права администратора(Это я уж через cmd.exe узнал).