Что нового

Объединить скрипты в один

Lamand

Новичок
Сообщения
6
Репутация
0
Всем доброго, помогите объединить 3 скрипта в один.

Задача стоит такая:

1. Ожидаем бездействия в системе.
2. Запускаем кликанье мыши при условии что открыта нужная вкладка в браузере .
3. Если произошло движение мыши, то кликанью стоп.
4. Снова ждем бездействия в системе.

Итак по кругу. Состряпал сие решение, но из трех скриптов, очень хочется объединить их в один файл.

Запуск кликера
Код:
#include <Timers.au3>
#NoTrayIcon
$Idle = 20 ; время бездействия в секундах

While 1
   Sleep(1000)
  If _Timer_GetIdleTime() > $Idle * 1000 Then

     If Not ProcessExists("КЛИКЕР.exe") Then Run("C:\КЛИКЕР.exe")
     If Not ProcessExists("СТОП КЛИКЕР.exe") Then Run("C:\СТОП КЛИКЕР.exe")


EndIf
WEnd


Сам кликер
Код:
#include <Timers.au3>
 #include <GuiTab.au3>
 #include <WinAPI.au3>
 #NoTrayIcon

While 1

$sTitle = "тут название окна браузера"

WinWait($sTitle)
If Not WinActive($sTitle) Then WinActivate($sTitle)
WinWaitActive($sTitle)

      MouseClick("left", 154, 123, 1, 0)
      Sleep(8000)

WEnd


Стоп кликера
Код:
#NoTrayIcon
Global $aPrevPos, $aNextPos

while Sleep(250)
   If IsArray($aPrevPos) Then
      $aNextPos = MouseGetPos()
      If ($aPrevPos[0] <> $aNextPos[0]) Or ($aPrevPos[1] <> $aNextPos[1]) Then
         ProcessClose('КЛИКЕР.exe')

      EndIf
   Else
      $aPrevPos = MouseGetPos()
   EndIf
WEnd
 

joiner

Модератор
Локальный модератор
Сообщения
3,385
Репутация
592
Код:
Global $aPrevPos, $aNextPos, $sTitle = "тут название окна браузера"
While 1
    WinWait($sTitle)
    If Not WinActive($sTitle) Then WinActivate($sTitle)
    WinWaitActive($sTitle)
    MouseClick("left", 154, 123, 1, 0)
    Sleep(8000)
    If IsArray($aPrevPos) Then
        $aNextPos = MouseGetPos()
        If ($aPrevPos[0] <> $aNextPos[0]) Or ($aPrevPos[1] <> $aNextPos[1]) Then Exit
    Else
        $aPrevPos = MouseGetPos()
    EndIf
WEnd
 
Автор
L

Lamand

Новичок
Сообщения
6
Репутация
0
Благодарю, один на запуск, другой для кликанья все же лучше чем три штуки))
 

joiner

Модератор
Локальный модератор
Сообщения
3,385
Репутация
592
я не понял одного. зачем первый код?. если для запуска кликов по таймеру(скажем, каждые десять секунд), то все можно свести в один код.
Код:
#include <Timers.au3>
#NoTrayIcon
$Idle = 20 ; время бездействия в секундах
Global $aPrevPos, $aNextPos, $sTitle = "тут название окна браузера"
While Sleep(8000)
    If _Timer_GetIdleTime() > $Idle * 1000 Then
        WinWait($sTitle)
        If Not WinActive($sTitle) Then WinActivate($sTitle)
        WinWaitActive($sTitle)
        MouseClick("left", 154, 123, 1, 0)
        If IsArray($aPrevPos) Then
            $aNextPos = MouseGetPos()
            If ($aPrevPos[0] <> $aNextPos[0]) Or ($aPrevPos[1] <> $aNextPos[1]) Then Exit
        Else
            $aPrevPos = MouseGetPos()
        EndIf
    EndIf
WEnd

естественно, в коде устанавливаем дополнительные Sleep, если они нужны
 
Автор
L

Lamand

Новичок
Сообщения
6
Репутация
0
Скрипт выполняется последовательно, поэтому это не совсем подходит. При открытии нужной вкладки курсор сразу прыгает по координатам, независимо от бездействия, так как событие бездействия уже состоялось и это жутко действует на нервы, когда мышь живет своей жизнью. В моей выше приведенной реализации скрипт СТОП КЛИКЕР успевает прихлопнуть КЛИКЕР до того как тот успеет кликнуть при переходе на нужную вкладку. Но вам все равно спасибо за участие!
Сообщение автоматически объединено:

я не понял одного. зачем первый код?.
Смысл в том что при бездействии кликание происходит по одному таймеру, а ожидание бездействия по другому.
Логика работы такая, когда за компом работает человек скрипт спит, если человек перестал работать, то скрипт проснулся и начал кликать.
 
Последнее редактирование:
Верх