[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Программы нажимающие на кнопки
Helram
Привет, какие есть программы имитирующие нажатия кнопок?
Их конечно много - типа uopilot, мне нужна программа которой я могу послать действие через php и она это выполнит.
Что то типа exec('Путь к программе, действие');
Пример нажать left mouse в x850 y340
FatCat
Цитата (Helram @ 28.03.2018 - 21:21)
Что то типа exec

... работает на сервере и не совершит никаких действий на клиенте.

_____________
Бесплатному сыру в дырки не заглядывают...
Helram
Цитата (FatCat @ 28.03.2018 - 23:31)
Цитата (Helram @ 28.03.2018 - 21:21)
Что то типа exec

... работает на сервере и не совершит никаких действий на клиенте.

Это понятно, мне для себя, на windows - вот допустим мне нужно кнопку нажать в N координатах - как мне сделать имитацию клика? нужна какая та программа которая это выполнит, в php я даю задачу программе допустим нажать в x100 y100 координатах, запускаю скрипт а далее происходит click.
С консолем вообще я мало знаком...
Ron
Helram, посмотри вот на эту прогу, или на ее клоны:
https://www.autohotkey.com/


Helram
Видимо нужно объяснить для чего мне это нужно.
Начну с самого важного - с консолем я не знаком, конечно научиться можно, а иногда и необходимо - главное знать что тебе нужно, в данный момент мне понадобилось просто клацать на кнопки (я так понимаю что это можно сделать только через стороннюю программу? - пробежался по названию команд консоля - не чего не увидел вроде mouse, click).
Пробовал разные делать запросы к поисковику типа: "управление uopilot из командной строки" - не чего нужного не нашел, видимо не так искал.
Вопрос: Я пишу не правильно свою задачу в поиске? Как правильно нужно писать?

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

Разберем мой простенький скрипт который я написал вчера за 10 минут ради забавы, данный скрипт узнает отличие между двумя изображениями, так как изображения точь в точь одинаковые кроме некоторых частей картинки "скрипт работает" - если бы изображение не много отличались (допустим яркость или цветность отличалось - то можно было преобразовать в черно белое изображение, либо +- цветность проверять а не ==, вообщем не важно что, для флеш игры "Найди отличие" он работает)


sleep(1);
$image=imagegrabscreen();
$png=imagecreatetruecolor(450, 396);
imagealphablending($png, false);
imagesavealpha($png, true);

$arr=array();
$arr2=array();

$height=0;
for($h=280; $h<676; $h++){
$width=0;
for($w=492; $w<942; $w++){
$rgba=imagecolorat($image, $w, $h);
$arr_rgba=imagecolorsforindex($image, $rgba);
$arr[]=array($arr_rgba['red'],$arr_rgba['green'],$arr_rgba['blue'],$height,$width);
$width++;
}
$height++;
}

for($h=280; $h<676; $h++){
for($w=962; $w<1412; $w++){
$rgba=imagecolorat($image, $w, $h);
$arr_rgba=imagecolorsforindex($image, $rgba);
$arr2[]=array($arr_rgba['red'],$arr_rgba['green'],$arr_rgba['blue']);
}
}



foreach($arr as $key => $value){
if(!isset($arr2[$key]) OR $arr2[$key][0]!=$value[0] OR $arr2[$key][1]!=$value[1] OR $arr2[$key][2]!=$value[2]){
$color=imagecolorallocatealpha($png,240,28,15,0);
}else{
$color=imagecolorallocatealpha($png,$arr2[$key][0],$arr2[$key][1],$arr2[$key][2],0);
}
imagesetpixel($png, $value[4], $value[3], $color);
}

header('Content-Type: image/png');
imagepng($png);
imagedestroy($png);
imagedestroy($image);


Смотрим, sleep(1) - ожидание 1 секунда чтоб я успел переключиться между окнами в браузере (первое окно запуск скрипта, второе игра).
После ожидания делается скриншот экрана (за одну секунду я успеваю переключиться на игру найди отличия), скрипт делает снимок экрана и далее следует разбор.

Первый цикл - это разбор первой картинки + добавления координат x y где должен высвечиваться данный пиксель (то есть - как мы видим for начинается не с 0, зачем нам весь экран сравнивать, да и вообще памяти бы нехватило - экран 1920x1080 каждый пиксель добавлять в массив - огого сколько бы gb оперативы понадобилось, мы только небольшую часть экрана будем сканировать "саму картинку" )

Второй цикл - это вторая картинка на которой нужно найти отличия.

Далее идет разбор массива и вычисление разницы цветов, если цвет == цвет второго изображения в определенном пикселе то цвет остается не измененным, если не равен изменяем на красный ("почти красный, чтоб глаза не напрягал сделал не много тусклее").

После этого вывод на экран обработанного изображения.

В данном случае мне понадобился кликер для того чтоб автоматизировать работу еще и клика по частям картинки смотря где цвета различаются.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.