Автор Тема: Сбросить _Timer_GetIdleTime перед началом выполнения скрипта  (Прочитано 4135 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ildary [?]

  • Новичок
  • *
  • Сообщений: 47
  • Репутация: 0
    • Награды
Уважаемые специалисты, подскажите пожалуйста, что можно сделать:

написан скрипт, который после запуска должен подождать 20 минут и если пользователь не дергал мышь/клаву, то должно выполниться некое действие. проблема в том, что если при старте скрипта пользователь уже давно ничего не делал, то скрипт посчитав, что уже _Timer_GetIdleTime > 20, начинает выполнение сразу. Пробовал перед вызовов выполнить MouseMove - не помогло. Заранее спасибо за советы!

Русское сообщество AutoIt


Оффлайн Kaster [?]

  • Бритва, Бритва Оккама
  • Глобальный модератор
  • *
  • Сообщений: 4020
  • Репутация: 622
  • Пол: Мужской
  • Мой Аватар, он лучший самый
    • Награды
  • Версия AutoIt: 3.3.14.0
ildary  [?]
Цитировать
написан скрипт
можешь привести репрезентативную часть скрипта?
Конференция посвященная AutoIt на jabber.ru - [email protected]
Как попасть на конференцию читаем тут


Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7790
  • Репутация: 2314
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
ildary  [?]
Цитировать
Пробовал перед вызовов выполнить MouseMove - не помогло
Непонятно, почему у Вас MouseMove() не работает:
Код: AutoIt [Выделить]
;#include <WinAPIEx.au3>
#include <Timers.au3>

HotKeySet('^{1}', '_Exit')

$iStart = TimerInit()
While 1
    If TimerDiff($iStart) > 3000 Then
        $aPos = MouseGetPos()
        MouseMove($aPos[0] + 50, $aPos[1] + 50, 0)
        MouseMove($aPos[0], $aPos[1], 0)
        $iStart = TimerInit()
    EndIf
    $iT_Timer = _Timer_GetIdleTime()
    ;$iT_WinAPI = _WinAPI_GetIdleTime()
    ConsoleWrite('_Timer_GetIdleTime: ' & $iT_Timer & @CR); & '_WinAPI_GetIdleTime: ' & $iT_WinAPI & @CR)
    Sleep(500)
WEnd

Func _Exit()
    Exit
EndFunc   ;==>_Exit


Оффлайн ildary [?]

  • Новичок
  • *
  • Сообщений: 47

  • Автор темы
  • Репутация: 0
    • Награды
ildary  [?]
Цитировать
Пробовал перед вызовов выполнить MouseMove - не помогло
Непонятно, почему у Вас MouseMove() не работает:

Возможно, причина в том, что я не использовал TimerInit()? Теперь я попробую с ним.

Русское сообщество AutoIt

Re: Сбросить _Timer_GetIdleTime перед началом выполнения скрипта
« Ответ #3 Отправлен: Апрель 11, 2011, 13:06:37 »

Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7790
  • Репутация: 2314
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
ildary  [?]
Цитировать
Возможно, причина в том, что я не использовал TimerInit()? Теперь я попробую с ним.
TimerInit() - TimerDiff() здесь не причем. В моем примере они используются только для того, чтобы каждые 3 секунды передвинуть мышку и вернуть ее обратно. После движения мышки значение _Timer_GetIdleTime() сбрасывается на 0 (у меня). Почему у Вас этого не происходит, мне непонятно. Вы бы привели, как писал Kaster, кусок своего кода.

Оффлайн dwerf [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 478
  • Репутация: 218
  • Пол: Мужской
  • Использует ArchLinux
    • Награды
А посчитать разницу между результатом _Timer_GetIdleTime() при запуске программы и результатом _Timer_GetIdleTime() в нужный момент нельзя?
00110110001000001101000011010011001

Оффлайн ildary [?]

  • Новичок
  • *
  • Сообщений: 47

  • Автор темы
  • Репутация: 0
    • Награды
Спасибо, я понял, что TimerInit() тут ни при чем.

вот мой код:


   MouseMove ( 50, 50, 1 ) ;сбросим таймер бездействия
   
   While 1

      $iIdleTime = _Timer_GetIdleTime()
      $iIdleTime = Round( $iIdleTime / ( 60 * 1000 ) )

      If     $iIdleTime > $Minites2Start Then ;recalc & exit

         ReCalc()
         ExitLoop

      EndIf

      Sleep( 60 * 1000 ) ; 1 min

   WEnd

Оффлайн ildary [?]

  • Новичок
  • *
  • Сообщений: 47

  • Автор темы
  • Репутация: 0
    • Награды
А посчитать разницу между результатом _Timer_GetIdleTime() при запуске программы и результатом _Timer_GetIdleTime() в нужный момент нельзя?

Хорошая идея, так и сделаю, раз по другому не работает.

Русское сообщество AutoIt

Re: Сбросить _Timer_GetIdleTime перед началом выполнения скрипта
« Ответ #7 Отправлен: Апрель 12, 2011, 09:48:36 »

Оффлайн Kaster [?]

  • Бритва, Бритва Оккама
  • Глобальный модератор
  • *
  • Сообщений: 4020
  • Репутация: 622
  • Пол: Мужской
  • Мой Аватар, он лучший самый
    • Награды
  • Версия AutoIt: 3.3.14.0
ildary

ПредупреждениеЗа нарушение правил форума (пункт В.11):
Цитировать
Любые отрывки AutoIt кода необходимо заключать в тег [autoit] (подробнее), а обычный код соответственно в тег [code] (подробнее). Также большие выдержки текста помещайте под тег [spoiler] (подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, Модератор раздела.

Оффлайн mrsoros [?]

  • Новичок
  • *
  • Сообщений: 17
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
Как получить _Timer_GetIdleTime другого пользователя?
Задача такая: служба запускается под пользователем system, т.е. скрипт уже активен до авторизации какого либо пользователя компа. Пользователь авторизуется и службе надо понять сколько пользователь бездействует. Но _Timer_GetIdleTime возвращает бездействие пользователя system, а не того который авторизовался на компе.
Как получить время бездействия авторизованного пользователя процессу запущенному другим пользователем? а?   :stars:

Русское сообщество AutoIt

Re: Сбросить _Timer_GetIdleTime перед началом выполнения скрипта
« Ответ #9 Отправлен: Май 16, 2017, 12:41:10 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
10 Ответов
4413 Просмотров
Последний ответ Июль 14, 2011, 16:41:16
от CreatoR
8 Ответов
4641 Просмотров
Последний ответ Июль 01, 2013, 23:19:04
от gecha
3 Ответов
2769 Просмотров
Последний ответ Февраль 27, 2013, 17:57:06
от madmasles
6 Ответов
3178 Просмотров
Последний ответ Апрель 17, 2013, 04:40:10
от antikos89
1 Ответов
1482 Просмотров
Последний ответ Август 12, 2013, 15:26:24
от Belfigor
1 Ответов
2016 Просмотров
Последний ответ Январь 04, 2014, 00:17:17
от madmasles
5 Ответов
1898 Просмотров
Последний ответ Март 01, 2014, 20:58:49
от _dron_
5 Ответов
1566 Просмотров
Последний ответ Апрель 07, 2014, 12:41:32
от fyviffitoffo
8 Ответов
1650 Просмотров
Последний ответ Сентябрь 30, 2014, 19:42:39
от CrazyKing
2 Ответов
892 Просмотров
Последний ответ Апрель 23, 2015, 10:37:24
от CrazyDoc