Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Axelenz

Pages: [1] 2 3
1
Добавлю своё понимание "реалистичности"...
Человек не робот и он не может прицельно взять мышку, не сдвинув её на минимальное расстояние и точно так же не может остановиться на заданной точке намертво. Поэтому для "реалистичности" движения (я использовал это правда не в играх, а на сайте, где была нежелательна автоматизированная работа с товаром, а товара было тысячи позиций, поэтому перестраховался...) вставлял "тремор рук"... непроизвольное движение, когда команда с головы уже ушла, а рука по инерции не успела остановиться  :)

Code: (clickermann) [Select]
SUB(mouse_tremor, $_xmouse, $_ymouse)
   //тремор
   //MOVE($_xmouse + RNDFROM(-1, 1, 2, 3), $_ymouse + RNDFROM(-1, 1, 2, 3))
   //WAITMS(RND(100, 150))
   MOVE($_xmouse + RND(-1, 1), $_ymouse + RND(-1, 1))
   WAITMS(RND(50, 100))
   MOVE($_xmouse + RNDFROM(0, -1, 0, 1, 0), $_ymouse + RNDFROM(0, -1, 0, 1, 0))
   WAITMS(RND(500, 1000))
END_SUB

Тремор перед любым началом движения мышки и в конце, при останове, добавлял так же в скрипт с форума:

Code: (clickermann) [Select]
SUB(mouse_move, $MOVE_END_X, $MOVE_END_Y)
   $RND_SPEED_MIN = 3
   $RND_SPEED_MAX = 5
   $MOVE_SPEED = RND($RND_SPEED_MIN, $RND_SPEED_MAX)  //множитель скорости
   //Отвечает за количество точек, по которым движется курсор
   
   $MOVE_Start_X = $_xmouse
   $MOVE_Start_Y = $_ymouse
   $MOVE_X = $MOVE_Start_X
   $MOVE_Y = $MOVE_Start_Y
   
   $dist = DIST($MOVE_END_X, $MOVE_END_Y, $MOVE_Start_X, $MOVE_Start_Y)
   
   $MOVE_SPEEDVAR = INT((SQRT($dist))/$MOVE_SPEED)
   
   IF($MOVE_SPEEDVAR < 1)
      $MOVE_SPEEDVAR = 1
   END_IF
   
   $MOVE_step = ($dist-1)/$MOVE_SPEEDVAR
   $MOVE_X_step = ($MOVE_END_X-$MOVE_Start_X)/$MOVE_step
   $MOVE_Y_step = ($MOVE_END_Y-$MOVE_Start_Y)/$MOVE_step
   
   FOR($MOVE_i = 0, $MOVE_i < INT($MOVE_step))
      $MOVE_X = $MOVE_X + $MOVE_X_step
      $MOVE_Y = $MOVE_Y + $MOVE_Y_step
      MOVE(ROUND($MOVE_X, 0), ROUND($MOVE_Y, 0))
      WAITMS($RND_SPEED_MIN + $RND_SPEED_MAX - $MOVE_SPEED)   //скорость перемещения в мс
      //Можно увеличить задержку между каждым движением к следующей точке.
   END_CYC
   
   MOVE($MOVE_END_X, $MOVE_END_Y)  //передвинуть окончательно в заданную точку
   WAITMS(RND(200, 300))
   
   mouse_tremor($_xmouse, $_ymouse)
END_SUB

Это даже движениями трудно назвать... это скорее микродвижения, связанные с дыханием человека, его сердцебиением, гендерной принадлежности, днём недели (это вечер пятницы или утро понедельника), принятием дозы алкоголя до того, истеричным складом ума и т.п. факторами физиологического и психического характера... Думал даже сделать разные треморы для разных психотипов людей, чтобы при входе с разных аккаунтов подключалась или истеричка или флегмат и т.д.  ;)

2
У меня работает на Windows 8.1 64 bit ну и соответственно v4.14.002b.
Это часть кода, как минимум, в конце необходимо поставить HALT.
И скорее всего придётся поиграться с задержками...

3
Code: (clickermann) [Select]
//Подпрограмма вставить данные из буфера в PS (нажать/отпустить правую клавишу мышки)
SUB(down_up)
   POSTMESSAGE(WNDFIND("Windows PowerShell"), 0x0204, 0, 0)
   WAITMS(100)
   POSTMESSAGE(WNDFIND("Windows PowerShell"), 0x0205, 0, 0)
   WAITMS(100)
   POSTMESSAGE(WNDFIND("Windows PowerShell"), 0x0100, 0x0D, 0)
   WAITMS(500)
END_SUB

//Укажите интересующий каталог и путь к файлу вывода информации
$dir = "C:\Program Files"
$file = "D:\directory.txt"

//Открыть PowerShell
EXECUTE("C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe")
WAIT(2)

//Вывести имена всех директорий в файл (включая скрытые и системные)
TOCLIP(STRCONCAT("Get-Childitem -Path '", $dir,"' -Recurse -Name -Attributes D,H,S | Out-File ", $file))
down_up()

//Вывести имена всех скрытых файлов в файл
//TOCLIP("Get-Childitem -Path 'C:\Program Files' -Recurse -Name -File -Attributes Hidden | Out-File D:\files.txt")
//down_up()

//Закрыть PowerShell
TOCLIP("exit")
WAITMS(100)
down_up()

Вот простая конструкция без использования циклов и условий. Можно добавлять любые команды PowerShell, как показано на примере получения списка скрытых файлов. Может она и не на 10 строк, но для любителей минимализма можно и сократить, убрав пустые строки, комментарии и т.д.

4
Хотя бы так:

Code: (clickermann) [Select]
STRWRITELN("data.ini", FROMCLIP())
$data = STRREADLN("data.ini", 1)

Code: (clickermann) [Select]
TFWRITE("data.ini", FROMCLIP())
$data = TFREAD("data.ini", 1)

5
Прочее / Re: Система оповещений
« on: January 01, 2019, 10:11:26 PM »
Вот вполне рабочая конструкция для отправки сообщений через бот telegram:

Code: (clickermann) [Select]
SUB(telegram_bot)
   //Счётчик сообщений
   $n_message = $n_message + 1
   
   //Системное сообщение окну
   SENDMESSAGE(WNDFIND("firefox.exe", 0), 0x0010, 0, 0)
   
   //Выделить адресную строку, очистить
   KEYPRESS(#F6)
   WAIT(1)
   KEYPRESS(#DELETE)
   WAIT(2)
   
   //Поместить в буфер ссылку
   TOCLIP(STRCONCAT("https://api.telegram.org/bot", $token, "/sendMessage?chat_id=-", $chat_id, "&text=", $text))
   
   //Вставить ссылку в адресную строку браузера
   KEYDOWN(#CTRL)
   WAITMS(50)
   KEYPRESS(#V)
   WAITMS(50)
   KEYUP(#CTRL)
   WAITMS(100)
   
   KEYPRESS(#ENTER)
   WAITMS(300)
END_SUB

//Укажите токен своего бота и id чата
$token = "***"
$chat_id = "00000000000000"
$n_message = 1

//Открыть браузер
EXECUTE("firefox.exe")
WAIT(3)

//Тело скрипта, где формируются данные для передачи или текст ($data)
//...
$data = "Проверка передачи."

//Формирование сообщения для отправки (с датой и временем, когда оно сформировано и номером сообщения)
$text = STRCONCAT($_date_str, " ", $_time_str, ". Сообщение № ", $n_message, ". ", $data)

telegram_bot()

HALT

А если где-то что-то возможно оптимизировать, путь корифеи от Clickermann поправят...


P.S.  Может кому пригодится... Для "неспешного" просмотра сообщений в telegram можно также воспользоваться получением новых сообщений с их сервера, например:

Code: (html5) [Select]
https://api.telegram.org/bot<Ваш token>/getUpdates?offset=-3

-3 - количество последних сообщений.

Т.е. Вы можете на мобильном и не заходить в telegram, а посмотреть в браузере журнал новых сообщений, которые отсылает bot.

6
Code: (clickermann) [Select]
//------------------------- PowerShell -----------------------------------------
//Подпрограмма вставить данные из буфера в PS (нажать/отпустить правую клавишу мышки)
SUB(down_up)
   POSTMESSAGE(WNDFIND("Windows PowerShell"), 0x0204, 0, 0)
   WAITMS(50)
   POSTMESSAGE(WNDFIND("Windows PowerShell"), 0x0205, 0, 0)
   WAITMS(50)
   POSTMESSAGE(WNDFIND("Windows PowerShell"), 0x0100, 0x0D, 0)
   WAITMS(500)
END_SUB

EXECUTE("C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe")
WAIT(1)

//Запустить от имени Администратора
TOCLIP(STRCONCAT("runas /savecred /user:Администратор C:\test.bat "))
down_up()

Пустые пароли не разрешены, пароль также можно ввести, пример:

Code: (clickermann) [Select]
%systemroot%\system32\rundll32.exe" keymgr.dll,QWERTY
Если совсем по простенькому, то можно и так:

Code: (clickermann) [Select]
EXECUTE("C:\Windows\System32\cmd.exe -Verb RunAs")      //запуск от имени Администратора
WAIT(1)

EXECUTE("C:\test.bat")
WAIT(1)

просто cmd.exe стартуем с правами администратора...

7
А почему бы не получить размеры картинки из свойств файла через Windows PowerShell ?

Как вариант, описано:
http://qaru.site/questions/1889193/get-the-detail-informations-from-a-png-file-in-powershell

8
Прочее / Re: Юмор по теме и не только
« on: April 29, 2018, 11:45:40 AM »
magenta же

Ну да... гугль так и говорит:

"Мадже́нта — колір від змішування червоного та синього кольорів (адитивне змішування), звужений діапазон з пурпурного сектора. Є основним у системі CMYK. Колір не може бути утворений монохроматичним світлом, його можна отримати тільки при поєднанні червоних та блакитних хвиль.

Досить часто як еталон мадженти розглядають фарбник фуксин. Це один з перших анілінових барвників; він був винайдений після битви при Мадженті (1859) у північній Італії, звідси і походить його назва.

У кольоровій системі маджентою називається червоно-пурпурний колір. У системі CMYK це один з трьох головних кольорів при друці. У системі RGB — це не основний колір і він утворюється при змішуванні червоного та блакитного, тому у цій системі колір маждента відрізняється від того, який використовується при друці. Називається маждента чи фуксія."

9
Прочее / Re: Юмор по теме и не только
« on: April 28, 2018, 06:39:10 PM »
Зато женщина не скажет, что бы это значило:

Code: (html5) [Select]
RGB rgb(255, 0, 255)
RGBA rgba(255, 0, 255, 1.0)
RYB красный: 100%, желтый: 0%, синий: 100%
Hex #ff00ff / #f0f
Десятичный 16711935

а это она и есть... фуксия  ;D ;D ;D

10
Oraven, спасибо за вариант, а какие плюсы гибкость/скорость даёт использование массива в данном случае ?
Как проверить оба варианта на скорость выполнения ?

Вариант
Code: (clickermann) [Select]
STRSEPARATE($price[$a], " ", $arr)не подходит опять же из-за человеческого фактора. Текст может быть написан с ошибками, например без пробелов между цифрами и словами...

Code: [Select]
Хорошая, лучшая цена:10,50 y.e. ед.товара
Только сегодня, цена - 21.39y.e. за штуку

тогда не получаем желаемый результат... В моём случае правильный результат важнее скорости выполнения, потому, что потом ошибки вылавливать вручную больше времени займёт...

Code: [Select]
14:58:25 Хорошая, лучшая цена:10,50 y.e. ед.товара
14:58:25 Только сегодня, цена - 21.39y.e. за штуку
14:58:25 15,7
14:58:25 10,50
14:58:25 21.39
14:58:25 15,7
14:58:25 10,50
14:58:25 21.39


11
Уважаемые знатоки форума, прошу подсказать, может есть более изящное решение следующей задачи.

Есть массив:

Code: (html5) [Select]
Хорошая, лучшая цена: 10,50 y.e. ед.товара
Только сегодня, цена - 21.39 y.e. за штуку
Купите товар по ц.: 15,7 y. e. в розницу
. . .

необходимо из каждой текстовой строки $price массива данных вырезать только саму цену, т.е. цифры с любыми разделительными знаками между ними.
Вариант

Code: (clickermann) [Select]
$price = STRFILTER($price,".0123456789,", 1)

не подходит из-за непредсказуемости текста. Подходит только вариант найти первую и последнюю цифры в тексте, а до и после - всё отбросить.

Набросал вот такой код, но может кто подскажет более простой/быстрый вариант, как это лучше реализовать ?

Code: (clickermann) [Select]
//---------- поиск первой и последней цифры в цене
                     FOR($na = 1, $na < strlen($price))
                        $first = $na
                        IF(STRPOS("0123456789", STRCUT($price, $na, 1)) > 0)
                           $na = strlen($price)
                        END_IF
                     END_CYC
                     $price = strcut2($price, $first, strlen($price))
                     FOR($na = strlen($price), $na > 0, -1)
                        $last = $na
                        IF(STRPOS("0123456789", STRCUT($price, $na, 1)) > 0)
                           $na = 0
                        END_IF
                     END_CYC
                     $price = strcut2($price, 1, $last)
                     //---------------------------------------

12
Предложения / Re: [Alpha/Beta Testing]
« on: March 30, 2018, 11:19:54 PM »
Сенкс, но я выберу лучше способ через коды... ;) Больше не хочу связываться с буквой "E"  ;)

Code: (clickermann) [Select]
arrpush($rc, 67) // "C"
arrpush($rc, 69) // "E"
arrpush($rc, 75) // "K"
//вывод в лог
FOR($a=0,$a<ARRSIZE($rc))
   LOGWRITE($a," = ", STRCONCAT(CHAR($rc[$a]),"1"))
END_CYC

Code: [Select]
23:05:35 0 = C1
23:05:35 1 = E1
23:05:35 2 = K1

А для использования исключительно в Excel рекомендую вид ссылки на ячейку:
Code: (clickermann) [Select]
arrpush($rc, "$E$1")

13
Предложения / Re: [Alpha/Beta Testing]
« on: March 30, 2018, 10:34:53 PM »
Да, но всё же... загоняю как бы текстовую переменную...

Code: (clickermann) [Select]
DEFINE($ERROR, "E1")
arrpush($rc, "C1")
arrpush($rc, $ERROR)
arrpush($rc, "K1")
//вывод в лог
FOR($a=0,$a<ARRSIZE($rc))
   LOGWRITE($a," = ",$rc[$a])
END_CYC

Аналогичный результат:
Code: (clickermann) [Select]
arrpush($rc, STRCONCAT(CHAR(69),"1"))  //"E1"
Code: [Select]
22:34:26 0 = C1
22:34:26 1 = 0
22:34:26 2 = K1

14
Предложения / Re: [Alpha/Beta Testing]
« on: March 30, 2018, 10:19:30 PM »
Проверил ещё раз... имя массива тут не при чём. Не воспринимается сама буква "E"... и получается всё, что после неё...

Code: (clickermann) [Select]
//Ячейки фильтров в массив
arrpush($rc, "C1")
arrpush($rc, "1E")
arrpush($rc, "K1")
//вывод в лог
FOR($a=0,$a<ARRSIZE($rc))
   LOGWRITE($a," = ",$rc[$a])
END_CYC

Code: [Select]
22:16:51 0 = C1
22:16:51 1 = 1
22:16:51 2 = K1

15
Предложения / Re: [Alpha/Beta Testing]
« on: March 30, 2018, 09:27:08 PM »
Простенький пример.
Работаю в Excel с прайсами, используя текстовые фильтры. Стиль ссылок на ячейку обычный, вида "A1". Вылезла ошибка.
Часть кода:

Code: (clickermann) [Select]
UNDEFINE($r1c1)

//Ячейки фильтров в массив
arrpush($r1c1, "A1")
arrpush($r1c1, "B1")
arrpush($r1c1, "C1")
arrpush($r1c1, "D1")
arrpush($r1c1, "E1")
arrpush($r1c1, "F1")
arrpush($r1c1, "G1")
arrpush($r1c1, "H1")
arrpush($r1c1, "I1")
arrpush($r1c1, "J1")
arrpush($r1c1, "K1")
arrpush($r1c1, "L1")
arrpush($r1c1, "M1")
arrpush($r1c1, "N1")
arrpush($r1c1, "O1")
arrpush($r1c1, "P1")
arrpush($r1c1, "Q1")
arrpush($r1c1, "R1")
arrpush($r1c1, "S1")
arrpush($r1c1, "T1")
arrpush($r1c1, "U1")
arrpush($r1c1, "V1")
arrpush($r1c1, "W1")
arrpush($r1c1, "X1")
arrpush($r1c1, "Y1")
arrpush($r1c1, "Z1")

//вывод в лог
FOR($a=0,$a<ARRSIZE($r1c1))
   LOGWRITE($a," = ",$r1c1[$a])
END_CYC

LOGWRITE("STRMD5($r1c1[5]) = ",STRMD5($r1c1[5]))
LOGWRITE("STRMD5(E1) = ",STRMD5("E1"))

Code: [Select]
21:26:46 0 = A1
21:26:46 1 = B1
21:26:46 2 = C1
21:26:46 3 = D1
21:26:46 4 = 0
21:26:46 5 = F1
21:26:46 6 = G1
21:26:46 7 = H1
21:26:46 8 = I1
21:26:46 9 = J1
21:26:46 10 = K1
21:26:46 11 = L1
21:26:46 12 = M1
21:26:46 13 = N1
21:26:46 14 = O1
21:26:46 15 = P1
21:26:46 16 = Q1
21:26:46 17 = R1
21:26:46 18 = S1
21:26:46 19 = T1
21:26:46 20 = U1
21:26:46 21 = V1
21:26:46 22 = W1
21:26:46 23 = X1
21:26:46 24 = Y1
21:26:46 25 = Z1
21:26:46 STRMD5($r1c1[5]) = E1DFFC8709F31A4987C8A88334107E89
21:26:46 STRMD5(E1) = 48ED5D2DB39237D7AE5E829B17581629

5-ый элемент массива - 0 ? Мне как раз нужен столбец по этому адресу... ну как всегда  ;D
Что такого необычного в буквенно-цифровом сочетании "E1", что оно не воспринимается ?
Все буквы для массива набраны исключительно в разкладке En. Эта ошибка выплывает из-за имени переменной $r1c1, или где ?
Clickermann v4.13.011b
Windows 8.1

Pages: [1] 2 3