1
Использование / Прошу помощи с привязкой к окну и работе в фоновом режиме
« on: December 03, 2021, 10:49:38 PM »
Доброго времени суток!
Не смог разобраться как заставить работать Clickermann в эмуляторе Андроида (в настоящий момент Nox) и параллельно самому использовать другие приложения на ПК (браузер, офисный пакет...).
В общих чертах скрипт работает верно, выполняя необходимые действия (возможно сделано топорно, буду признателен если тоже подскажете как упростить). Но это только если окно не перекрыто, т.к. я не смог разобраться с привязкой к конкретному окну. Если часть эмулятора перекрыта, закрывая необходимую область, то работа скрипта приостанавливается.
Вторая проблема (возможно не для вас а для меня) то что при работе скрипта мышка перескакивает в окно в точку "клика".
Пытался использовать конструкцию
Скрипт собрал из примеров на сайте, поэтому там много не относящихся к делу комментариев, плюс добавил вывод сообщений в лог, что бы понять где может крыться ошибка, потом все почищу.
Уточнение:
Собственно некорректно работающая часть кода ниже (два идентичных блока)
Попытался организовать работу Clickerman на виртулатьной машине. Установил VirtualBox с WinXP, как сказано в одной их тем здесь на форуме http://crapware.aidf.org/forum/index.php?topic=2123.msg12663#msg12663 , но там я не могу настроить интернет (требует драйвера на сетевую карту). Возможно тоже буду пытаться сделать это параллельно.
Буду признателен за помощь.
Не смог разобраться как заставить работать Clickermann в эмуляторе Андроида (в настоящий момент Nox) и параллельно самому использовать другие приложения на ПК (браузер, офисный пакет...).
Code: [Select]
// Требуется версия кликера 4.12 и выше
// #include "alt_winmode.cms"
// $HWND = 789498
#logfile "Log.txt"
IF($t1 = 0)
$t1 = $t1^1
// включение
LOGWRITE("в_ключение 1")
LOGWRITE("$t1=", $t1)
GETSCREEN
HINTPOPUP ("Нажмите CTRL для продолжения","Укажите верхний левый угол")
WHILE(iskeydown(#CTRL)=0)
WAITMS(20)
END_CYC
$x1 = $_xmouse
$y1 = $_ymouse
WHILE(iskeydown(#CTRL)=1)
WAITMS(20)
LOGWRITE("X=", $x1, " Y=", $y1)
LOGWRITE("исходная координата 1")
$flag=1
END_CYC
BEEP(1000,200)
//
HINTPOPUP ("Нажмите CTRL для продолжения","Укажите нижний правый угол")
WHILE(iskeydown(#CTRL)=0)
WAITMS(20)
END_CYC
$x2 = $_xmouse
$y2 = $_ymouse
WHILE(iskeydown(#CTRL)=1)
WAITMS(20)
LOGWRITE("X=", $x2, " Y=", $y2)
LOGWRITE("исходная координата 2")
END_CYC
BEEP(1000,200)
//
ELSE
//$t1 = $t1^1
// выключение
LOGWRITE("вы_ключение")
END_IF
GETSCREEN
INC($vargetscreen,1)
LOGWRITE("GETSCREEN")
LOGWRITE("vargetscreen=", $vargetscreen)
//ждем пиксель в точке 1
IF_PIXEL_IN($x1-5, $y1-5, $x1+5, $y1+5, 16775659)
LOGWRITE("пиксель точка 1 найден")
LCLICK($_return1, $_return2)
// A_LCLICK ($_return1, $_return2, $hwnd)
WAITMS(250)
INC($var_1,1)
LOGWRITE("ЛКМ нажата")
LOGWRITE("var_1=", $var_1)
LOGWRITE("X=", $x1, " Y=", $y1)
LOGWRITE("X=", $_return1, " Y=", $_return2)
END_IF
//ждем пиксель в точке 2
IF_PIXEL_IN($x2-5, $y2-5, $x2+5, $y2+5, 16775659)
LOGWRITE("пиксель точка 2 найден")
LCLICK($_return1, $_return2)
// A_LCLICK ($_return1, $_return2, $hwnd)
WAITMS(250)
INC($var_2,1)
LOGWRITE("ЛКМ нажата")
LOGWRITE("var_2=", $var_2)
LOGWRITE("X=", $x2, " Y=", $y2)
LOGWRITE("X=", $_return1, " Y=", $_return2)
END_IF
LOGWRITE("конец цикла")
В общих чертах скрипт работает верно, выполняя необходимые действия (возможно сделано топорно, буду признателен если тоже подскажете как упростить). Но это только если окно не перекрыто, т.к. я не смог разобраться с привязкой к конкретному окну. Если часть эмулятора перекрыта, закрывая необходимую область, то работа скрипта приостанавливается.
Вторая проблема (возможно не для вас а для меня) то что при работе скрипта мышка перескакивает в окно в точку "клика".
Пытался использовать конструкцию
Code: [Select]
#include "alt_winmode.cms"
$HWND = 789498
A_LCLICK ($_return1, $_return2, $hwnd)
иCode: [Select]
$WM_LBUTTONDOWN = 0x0201 // Левая кнопка мыши нажата.
$WM_LBUTTONUP = 0x0202 // Левая кнопка мыши отпущена.
$MK_LBUTTON = 0x0001 // Левая кнопка мыши находится в нажатом состоянии.
postmessage($HWND, $WM_LBUTTONDOWN, $MK_LBUTTON, $x + ($y*65536))
postmessage($HWND, $WM_LBUTTONUP, $MK_LBUTTON, $x + ($y*65536))
но к сожалению безуспешно. Скрипт при этом перестает работать (возможно я где то допустил ошибку).Скрипт собрал из примеров на сайте, поэтому там много не относящихся к делу комментариев, плюс добавил вывод сообщений в лог, что бы понять где может крыться ошибка, потом все почищу.
Уточнение:
Собственно некорректно работающая часть кода ниже (два идентичных блока)
Code: [Select]
IF_PIXEL_IN($x2-5, $y2-5, $x2+5, $y2+5, 16775659)
LCLICK($_return1, $_return2)
WAITMS(250)
END_IF
Попытался организовать работу Clickerman на виртулатьной машине. Установил VirtualBox с WinXP, как сказано в одной их тем здесь на форуме http://crapware.aidf.org/forum/index.php?topic=2123.msg12663#msg12663 , но там я не могу настроить интернет (требует драйвера на сетевую карту). Возможно тоже буду пытаться сделать это параллельно.
Буду признателен за помощь.