Что нового

Помогите дополнить скрипт

PaulDNice

Новичок
Сообщения
4
Репутация
0
Добрый день!
На работе поставили программу по учету рабочего времени. Не возможно теперь ни в туалет, ни покурить выйти без разрешения.
На просторах интернета нашёл вот такой скрипт который рандомно двигает мышью. Но к сожалению без нажатия кнопок программа не распознаёт данные действия как пользователя. Помогите пожалуйста дополнить этот скрипт (сам в этом не силён), чтоб мышка не только рандомно двигалась, но ещё иногда также рандомно нажимала левую кнопку.

SRandom(@MSEC)
opt("MouseCoordMode",0)
Sleep(3000)
While true
if random(0,3,1)=2 then
Sleep(Random (1000,5000,1))
Send("{PGDN}")
Else
Sleep(Random (500,1500,1))
$aPos = MouseGetPos()
MouseMove($aPos[0] + Random(300)-115, $aPos[1] + random(300)-110)
$aPos = MouseGetPos()
MouseMove($aPos[0] + Random(314)-117, $aPos[1] + random(310)-115,3)
Sleep(Random (1000,5000,1))
EndIf
WEnd

Заранее благодарен!
Ещё момент, что данный скрипт сдвигает мышку постоянно правее и вниз. В итоге она падает в правый нижний угол экрана и оттуда уже не выходит. Если можно это как то поправить, было бы супер. )
 

FrecKDancE

Новичок
Сообщения
19
Репутация
1
Думаю, тут нет ничего сложного. Давайте разберём Ваш код:
Код:
$aPos = MouseGetPos()
MouseMove($aPos[0] + Random(300)-115, $aPos[1] + random(300)-110)
$aPos = MouseGetPos()
MouseMove($aPos[0] + Random(314)-117, $aPos[1] + random(310)-115,3)
Как мы видим, то он получает позицию курсора и просто меняет её. Из-за этого курсор забивается в нижний угол. А если сделать так, чтобы курсор передвигался в рандомную точку на экране, в не зависимости его текущего положения?
Меняем эти 4 строчки на:
Код:
MouseMove(0 + random(1920), 0 + random(1080))
Значения рандома меняйте на расширение своего экрана.

После чего добавляем нажатие левой кнопки мыши:
Код:
MouseClick ( "left")

По итогу мы должны получить такой код:
Код:
SRandom(@MSEC)
opt("MouseCoordMode",0)
Sleep(3000)
While true
if random(0,3,1)=2 then
Sleep(Random (1000,5000,1))
Send("{PGDN}")
Else
Sleep(Random (500,1500,1))
MouseMove(0 + random(1920), 0 + random(1080))
MouseClick ("left")
Sleep(Random (1000,5000,1))
EndIf
WEnd
 
Автор
P

PaulDNice

Новичок
Сообщения
4
Репутация
0
Думаю, тут нет ничего сложного. Давайте разберём Ваш код:
Код:
$aPos = MouseGetPos()
MouseMove($aPos[0] + Random(300)-115, $aPos[1] + random(300)-110)
$aPos = MouseGetPos()
MouseMove($aPos[0] + Random(314)-117, $aPos[1] + random(310)-115,3)
Как мы видим, то он получает позицию курсора и просто меняет её. Из-за этого курсор забивается в нижний угол. А если сделать так, чтобы курсор передвигался в рандомную точку на экране, в не зависимости его текущего положения?
Меняем эти 4 строчки на:
Код:
MouseMove(0 + random(1920), 0 + random(1080))
Значения рандома меняйте на расширение своего экрана.

После чего добавляем нажатие левой кнопки мыши:
Код:
MouseClick ( "left")

По итогу мы должны получить такой код:
Код:
SRandom(@MSEC)
opt("MouseCoordMode",0)
Sleep(3000)
While true
if random(0,3,1)=2 then
Sleep(Random (1000,5000,1))
Send("{PGDN}")
Else
Sleep(Random (500,1500,1))
MouseMove(0 + random(1920), 0 + random(1080))
MouseClick ("left")
Sleep(Random (1000,5000,1))
EndIf
WEnd
Спасибо большое! В понедельник попробую... )
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Я бы использовал вот такой скрипт:
Код:
#NoTrayIcon
#include <WindowsConstants.au3>

Global $fPause = False
Global $fLastPos = False

HotKeySet('^+1', '_Pause')
HotKeySet('^+2', '_UnPause')
HotKeySet('^+3', '_Exit')

$hGUI = GUICreate('', 100, 100, 0, 0, $WS_POPUP, BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))
WinSetTrans($hGUI, '', 1)

While 1
    If $fPause Then
        Sleep(Random(1000, 5000, 1))
        
        If Not $fPause Then
            ContinueLoop
        EndIf
        
        If $fLastPos Then
            MouseMove(50, 50)
        Else
            MouseMove(10, 10)
        EndIf
        
        $fLastPos = Not $fLastPos
        
        If Not $fPause Then
            ContinueLoop
        EndIf
        
        WinActivate($hGUI)
        MouseClick('Main')
    Else
        Sleep(10)
    EndIf
WEnd

Func _Pause()
    $fPause = True
    GUISetState(@SW_SHOW, $hGUI)
EndFunc

Func _UnPause()
    $fPause = False
    GUISetState(@SW_HIDE, $hGUI)
EndFunc

Func _Exit()
    Exit
EndFunc


Нажимаем Ctrl + Shift + 1 чтобы сделать паузу, т.е отлучиться от компьютера (будет создано прозрачное окно в котором и будут производиться клики).
Нажимаем Ctrl + Shift + 2 чтобы отключить паузу (при возврате к компьютеру).
Нажимаем Ctrl + Shift + 3 чтобы завершить работу скрипта.
 
Автор
P

PaulDNice

Новичок
Сообщения
4
Репутация
0
Я бы использовал вот такой скрипт:
Код:
#NoTrayIcon
#include <WindowsConstants.au3>

Global $fPause = False
Global $fLastPos = False

HotKeySet('^+1', '_Pause')
HotKeySet('^+2', '_UnPause')
HotKeySet('^+3', '_Exit')

$hGUI = GUICreate('', 100, 100, 0, 0, $WS_POPUP, BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))
WinSetTrans($hGUI, '', 1)

While 1
    If $fPause Then
        Sleep(Random(1000, 5000, 1))
       
        If Not $fPause Then
            ContinueLoop
        EndIf
       
        If $fLastPos Then
            MouseMove(50, 50)
        Else
            MouseMove(10, 10)
        EndIf
       
        $fLastPos = Not $fLastPos
       
        If Not $fPause Then
            ContinueLoop
        EndIf
       
        WinActivate($hGUI)
        MouseClick('Main')
    Else
        Sleep(10)
    EndIf
WEnd

Func _Pause()
    $fPause = True
    GUISetState(@SW_SHOW, $hGUI)
EndFunc

Func _UnPause()
    $fPause = False
    GUISetState(@SW_HIDE, $hGUI)
EndFunc

Func _Exit()
    Exit
EndFunc


Нажимаем Ctrl + Shift + 1 чтобы сделать паузу, т.е отлучиться от компьютера (будет создано прозрачное окно в котором и будут производиться клики).
Нажимаем Ctrl + Shift + 2 чтобы отключить паузу (при возврате к компьютеру).
Нажимаем Ctrl + Shift + 3 чтобы завершить работу скрипта.
Спасибо, попробую и этот. Но думаю с прозрачным окном может не получиться. Так как программа мониторит не только активность пользователя, но и где эта активность происходит. Интересно, будет ли программа слежения понимать, что активность пользователя происходит в какой не рабочей области...
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
программа мониторит не только активность пользователя, но и где эта активность происходит
Ну и какая ей разница где? Или там есть одна программа в которой разрешено работать?
Тогда айтишники у вас там халтурят :wink: , потому что всё это можно ограничить более грамотно.
 
Автор
P

PaulDNice

Новичок
Сообщения
4
Репутация
0
Ну и какая ей разница где? Или там есть одна программа в которой разрешено работать?
Тогда айтишники у вас там халтурят :wink: , потому что всё это можно ограничить более грамотно.
Дело не в ограничении, а в том, что программа мониторинга выдаёт отчёт в какой программе и сколько времени пользователь проводил в течении дня. Как то так...)
 
Верх