Что нового

[Автоматизация] Au3 time recorder

Irlandec

Новичок
Сообщения
21
Репутация
0
Здравствуйте, подскажите, есть ли софтина под тип Au3recorder, но чтобы она корректно и без глюков записывала не только координаты, но и время, то есть вбивала интервалы в виде sleep(time\sec), пытался сделать сам, но вышло не очень стабильно. :scratch:
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Код:
#include <Misc.au3>

HotKeySet("{ESC}", "Quit")

FileDelete("script.au3")
$t = TimerInit()

While Sleep(10)
  If _IsPressed("01") Then
    FileWriteLine("script.au3", "Sleep(" & Round(TimerDiff($t)) & ")")
    FileWriteLine("script.au3", "MouseClick('left', " & MouseGetPos(0) & ", " & MouseGetPos(1) & ", 1, 0)")
    Do
    Until Not _IsPressed("01")
    $t = TimerInit()
  EndIf
WEnd

Func Quit()
  Exit
EndFunc
 
Автор
I

Irlandec

Новичок
Сообщения
21
Репутация
0
[Автоматизация] Re: [Автоматизация] Au3 time recorder

Спасибо большое, осталось прикрутить пару фишек, всё оказалось проще чем кажется :IL_AutoIt_1:

Немного допилил

Код:
#include <Misc.au3>

HotKeySet("{ESC}", "Quit")

FileDelete("script.au3")
$t = TimerInit()

While Sleep(10)
  If _IsPressed('01') Then

    FileWriteLine("script.au3", "Sleep(" & Round(TimerDiff($t)) & ")")
    FileWriteLine("script.au3", "MouseClick('left', " & MouseGetPos(0) & ", " & MouseGetPos(1) & ", 1, 0) ;" & InputBox("куда нажал?", "куда?", "пиши сходу, окно активно", "",300, 150, 800, 400) &"")
      Do
    Until Not _IsPressed('01')
    $t = TimerInit()
  EndIf
WEnd

Func Quit()
  Exit
EndFunc


Теперь он спрашивает, что это за координата, что позволяет комментировать координаты :ok: , только окей нельзя нажимать мышкой, надо Enter`ом

К сожалению так и не смог постичь, простой вариант детекта mousedrag, ну то есть если я не кликаю, а перетаскиваю. Но вообщем то, с комментариями можно и так переделать будет.
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Irlandec [?]
окей нельзя нажимать мышкой
Можно, т.к. InputBox() блокирует цикл.

простой вариант детекта mousedrag
Код:
#include <Misc.au3>

HotKeySet("{ESC}", "Quit")

FileDelete("script.au3")
Global $t = TimerInit(), $start, $stop

While Sleep(10)
  If _IsPressed('01') Then
    $start = MouseGetPos()
    FileWriteLine("script.au3", "Sleep(" & Round(TimerDiff($t)) & ")")
    Do
      Sleep(10)
    Until Not _IsPressed('01')
    $stop = MouseGetPos()
    If $start[0] = $stop[0] And $start[1] = $stop[1] Then
      FileWriteLine("script.au3", "MouseClick('left', " & $start[0] & ", " & $start[1] & ", 1, 0) ; " & InputBox("куда нажал?", "куда?", "пиши сходу, окно активно", "", 300, 150, 800, 400))
    Else
      FileWriteLine("script.au3", "MouseClickDrag('left', " & $start[0] & ', ' & $start[1] & ', ' & $stop[0] & ', ' & $stop[1] & ') ; ' & WinGetTitle("[active]"))
    EndIf
    $t = TimerInit()
  EndIf
WEnd

Func Quit()
  Exit
EndFunc
 

dr.room

Новичок
Сообщения
283
Репутация
0
Не могу понять - как именно на практике этим скриптом воспользоваться...не подскажете?
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
dr.room
как именно на практике этим скриптом воспользоваться
Запустить, накликать ЛКМ (в появляющемся окне можно вписывать комментарии - куда кликнули), нажать ESC.
Запустить полученный script.au3 для воспроизведения записанных кликов.
 

dr.room

Новичок
Сообщения
283
Репутация
0
Запустить полученный script.au3 для воспроизведения записанных кликов.
Просто не заметил, что в том же каталоге и будет записанный скрипт....
Немного не хватает стандартного функционала:
- определения окна, в котором был клик;
- регистрации горячих клавиш;
Если бы их добавить - было бы настоящий авто-рекордер (с редким функционалом, надо заметить), добавьте пожалуйста, если не затруднит...
Но это пользовательское мнение, спасибо.
 

Oleg_Blag

Новичок
Сообщения
2
Репутация
0
Код:
#include <Misc.au3>

HotKeySet("{ESC}", "Quit")

FileDelete("script.au3")
$t = TimerInit()

While Sleep(10)
  If _IsPressed("01") Then
    FileWriteLine("script.au3", "Sleep(" & Round(TimerDiff($t)) & ")")
    FileWriteLine("script.au3", "MouseClick('left', " & MouseGetPos(0) & ", " & MouseGetPos(1) & ", 1, 0)")
    Do
    Until Not _IsPressed("01")
    $t = TimerInit()
  EndIf
WEnd

Func Quit()
  Exit
EndFunc
Здравствуйте! Не подскажите, а если мне надо фиксировать клики и sleep только в определенных координатах: (x=201,y=65) верхний угол, (x=591,y=455) нижний угол, а не все нажатия по экрану?

Как это можно реализовать?
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Как это можно реализовать?
Код:
#include <Misc.au3>

HotKeySet("{ESC}", "Quit")

FileDelete("script.au3")
$t = TimerInit()

Global $x1 = 201, $y1 =  65 ; левый верх
Global $x2 = 591, $y2 = 455 ; правый низ

While Sleep(10)
  If _IsPressed("01") Then
    $pos = MouseGetPos()
    If $pos[0] >= $x1 And $pos[1] >= $y1 And $pos[0] <= $x2 And $pos[1] <= $y2 Then
      FileWriteLine("script.au3", "Sleep(" & Round(TimerDiff($t)) & ")")
      FileWriteLine("script.au3", "MouseClick('left', " & MouseGetPos(0) & ", " & MouseGetPos(1) & ", 1, 0)")
    EndIf
    Do
    Until Not _IsPressed("01")
    $t = TimerInit()
  EndIf
WEnd

Func Quit()
  Exit
EndFunc
 

Oleg_Blag

Новичок
Сообщения
2
Репутация
0
Спасибо!
Сообщение автоматически объединено:

Здравствуйте! Извините, а можно добавить дату в формате (14.05.2021 19:37:15) в строку MouseClick, покажите как это можно сделать.

AutoIt код:
#include <Misc.au3>

HotKeySet("{ESC}", "Quit")

FileDelete("script.au3")
$t = TimerInit()

Global $x1 = 201, $y1 =  65 ; левый верх
Global $x2 = 591, $y2 = 455 ; правый низ

While Sleep(10)
  If _IsPressed("01") Then
    $pos = MouseGetPos()
    If $pos[0] >= $x1 And $pos[1] >= $y1 And $pos[0] <= $x2 And $pos[1] <= $y2 Then
      FileWriteLine("script.au3", "Sleep(" & Round(TimerDiff($t)) & ")")
      FileWriteLine("script.au3", "MouseClick('left', " & MouseGetPos(0) & ", " & MouseGetPos(1) & ", 1, 0)")
    EndIf
    Do
    Until Not _IsPressed("01")
    $t = TimerInit()
  EndIf
WEnd

Func Quit()
  Exit
EndFunc
Сообщение автоматически объединено:

Сделал, так. Как разделить между собой - 15.05.2021 0:24:11MouseClick('left', 331, 179, 1, 0) - дату от текста?
Код:
#include <Misc.au3>
#include <Date.au3>

HotKeySet("{ESC}", "Quit")

FileDelete("script.au3")
$t = TimerInit()

Global $x1 = 201, $y1 =  65 ; левый верх
Global $x2 = 591, $y2 = 455 ; правый низ

While Sleep(10)
  If _IsPressed("01") Then
    $pos = MouseGetPos()
    If $pos[0] >= $x1 And $pos[1] >= $y1 And $pos[0] <= $x2 And $pos[1] <= $y2 Then
      FileWriteLine("script.au3", _DateTimeFormat( _NowCalc(),0) & "Sleep(" & Round(TimerDiff($t)) & ")")
      FileWriteLine("script.au3", _DateTimeFormat( _NowCalc(),0) & "MouseClick('left', " & MouseGetPos(0) & ", " & MouseGetPos(1) & ", 1, 0)")
    EndIf
    Do
    Until Not _IsPressed("01")
    $t = TimerInit()
  EndIf
WEnd

Func Quit()
  Exit
EndFunc
 
Последнее редактирование:
Верх