Что нового

[Мышь, клавиатура] Как определить бездействие мыши

modnik

Знающий
Сообщения
138
Репутация
13
Мне нужно определить момент, когда мышь не двигается, например, минуты две, а после этого запустить программу
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
modnik
Вот пример использования функции _WinAPI_GetIdleTime()...
Только она реагирует еще на нажатие клавиш, то есть, полностью на активность пользователя...

Код:
#Include <WinAPIEx.au3>

While 1
    ToolTip('Idle time (ms): ' & _WinAPI_GetIdleTime())
    Sleep(1000)
WEnd
 
Автор
M

modnik

Знающий
Сообщения
138
Репутация
13
snoitaleR сказал(а):
modnik
Вот пример использования функции _WinAPI_GetIdleTime()...
Только она реагирует еще на нажатие клавиш, то есть, полностью на активность пользователя...

Код:
#Include <WinAPIEx.au3>

While 1
    ToolTip('Idle time (ms): ' & _WinAPI_GetIdleTime())
    Sleep(1000)
WEnd

вот так правильно?
Код:
#Include <WinAPIEx.au3>
While 1
do 
$b=_WinAPI_GetIdleTime()
until $b > 120 000
Run("test.exe")
Wend
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
modnik

{OverQuoteWarn}
 

northern

Новичок
Сообщения
4
Репутация
1
Правильно ли поднимать старые темы? Не знаю. Первый раз пишу.
Не получается пока самому решить проблему.
Надо чтобы курсор мыши после определенного бездействия становился в одно и тоже место. Написал скрипт. Он вроде, даже работает, но загрузка процессора 100% все время. Подскажите как оптимизировать.
Код:
#Include <WinAPIEx.au3>
While 1
do
$b=_WinAPI_GetIdleTime()
until $b = 5000
MouseMove(10, 100)
Wend
 

northern

Новичок
Сообщения
4
Репутация
1
InnI, большое спасибо за помощь! Все получилось!
 

____

Новичок
Сообщения
2
Репутация
0
Код:
#Include <WinAPIEx.au3>
While 1
do
  Sleep(600)
until _WinAPI_GetIdleTime() >= 700

Run("start-low.bat")

Wend



не получается реализовать закрытие запущенного приложения при первой активности пользователя в бесконечном цикле
 

____

Новичок
Сообщения
2
Репутация
0
Исправился


Добавлено:
Сообщение автоматически объединено:

сделал закрытие через 2-а одновременно работающих exe
криво, но хоть как то, по другому не вышло

Код:
while (1)
    $idleTime = _Timer_GetIdleTime()


  
    if $idleTime < 10  Then           ;ест действия
        ProcessClose ("cmd.exe")
    EndIf

Sleep(100)

WEnd


Код:
#Include <WinAPIEx.au3>
While 1
do

until _WinAPI_GetIdleTime() >= 1400000

Run("test.bat")

ProcessWaitClose ("cmd.exe")

Wend


Не могу нормально объединить в один exe , что б процессор не ел.
 
Верх