Клик по flash (.swf)

galex

Client
Регистрация
14.01.2014
Сообщения
50
Благодарностей
2
Баллы
8
Пытаюсь эмулировать клик по swf ролику, но безуспешно. Флешка не реагирует.
Подскажите пожалуйста как реализовать клик, когда в браузере лишь swf ролик?
пример ссылки www.youtube.com/v/Wx8ynRJDGk4?version=3&hl=ru_RU.swf
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
По координатам можно попробовать. Экшеном эмуляции мыши.
 

galex

Client
Регистрация
14.01.2014
Сообщения
50
Благодарностей
2
Баллы
8

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
901
Баллы
113
а клик точно попадает по адресу?
 

galex

Client
Регистрация
14.01.2014
Сообщения
50
Благодарностей
2
Баллы
8

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
901
Баллы
113
до.... тоже попробовал, но по факту у вас получается работа не с браузером а с flash... у вас как бы получается кликнуть по флешке целиком, но вам то надо поредать флешке событие о клике, ибо флешка это сама по себе независимая программа со своими переменными и пр и пр.
Я попробовал - у меня не получилось, возможно из под winapi вышло бы лучше, но я его боюсь а на шарпе сделать прямоты рук не хватает
 

galex

Client
Регистрация
14.01.2014
Сообщения
50
Благодарностей
2
Баллы
8
Может знает кто, как на С# реализовать клик?
 

7make

Client
Регистрация
25.06.2011
Сообщения
1 547
Благодарностей
1 311
Баллы
113

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с 7make какие-либо сделки.

  • Спасибо
Реакции: rostonix и Lexicon

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
901
Баллы
113
Магия!
 

galex

Client
Регистрация
14.01.2014
Сообщения
50
Благодарностей
2
Баллы
8

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Можно использовать клик по картинке.
 

galex

Client
Регистрация
14.01.2014
Сообщения
50
Благодарностей
2
Баллы
8

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
901
Баллы
113
Не не сработает. при запуске флешролика из, скажем, ютуба все запускается и стартует. В примере же ТС он сразу подгружает объект, с которым работать не получается.
Пробовал:
клик по картинке
клик по элементу
клик по координатам
эмуляцию драгндроп
эмуляцию жмакания Enter
ни одни способ не смог запустить флешку по ссылке ТС
 

galex

Client
Регистрация
14.01.2014
Сообщения
50
Благодарностей
2
Баллы
8
При клике правой кнопкой мыши выпадает не меню Zenno, а меню flash плеера.


При попытке добавить поиск по картинке через древо элементов, скриншот элемента не осуществляется.
Вместо скриншота страницы - белый прямоугольник.
 

7make

Client
Регистрация
25.06.2011
Сообщения
1 547
Благодарностей
1 311
Баллы
113

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с 7make какие-либо сделки.

1. Берем из списка урл на swf - {-Variable.swf-}
2. Сами генерим локальную страницу. randomname.html
HTML:
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
<div id="swf">
   <embed type="application/x-shockwave-flash" src="{-Variable.swf-}"  width="900" height="600">
</div>
</body>
</html>
3. Сохраняем на localhost
4. Переходим на нее в браузере http://localhost/randomname.html
5. Выполняем эмуляцию мыши



п.с1. Можно не генерить страницу, а слать (main page ) сразу как innerhtml для html, но тогда в статусе прогрузка страницы будет раньше чем флеша.
п.с2. При переходе по урлу в браузере , ФФ рендерит в относительных width="100%" height="100%. Возможно? если с этой стороны подойти, сработает клик. Поковырять Get/Set для embed.
п.с3. Стили для div можно оформить по "вкусу". Пример на коленке :-)
 

galex

Client
Регистрация
14.01.2014
Сообщения
50
Благодарностей
2
Баллы
8
7make, большое спасибо за дельные мысли!
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
Код:
HtmlElement flash = tab.FindElementByAttribute("embed", "id", "movie_player", "text", 0);
Image img = Image.FromFile("D:\\Zen\\Projects\\flash\\Image5.bmp");
Rectangle flash_rectangle = new Rectangle(flash.DisplacementInDocument.X, flash.DisplacementInTabWindow.Y, flash.Width, flash.Height);
Rectangle search_rectangle = new Rectangle(flash_rectangle.X,flash_rectangle.Y,60,50);
Rectangle found_rectangle = new Rectangle(0,0,0,0);
using (var ms = new System.IO.MemoryStream())
{
img.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
byte[] imageBytes = ms.ToArray();
base64String = Convert.ToBase64String(imageBytes);
}
do
{
rectangleString = tab.FindImage(base64String, new[] {search_rectangle}, 99);
if (!String.IsNullOrWhiteSpace(rectangleString))
{
string[]split = rectangleString.Split(',');
found_rectangle = new System.Drawing.Rectangle(System.Convert.ToInt32(split[0].Trim()), System.Convert.ToInt32(split[1].Trim()), System.Convert.ToInt32(split[2].Trim()), System.Convert.ToInt32(split[3].Trim()));
if (!found_rectangle.IsEmpty)
{
Emulator.MouseСlick(instance.ActiveTab.Handle, MouseButton.Left, MouseButtonEvent.Click, found_rectangle.X, found_rectangle.Y);
//здесть можно кликнуть
}
}
}
while(flash_rectangle.Width > (search_rectangle.X += search_rectangle.Width/2));
Этот код ищет область в ролике по картинке, сохраненной на диске и кликает по ней. В моем случае у меня тоже не получилось кликнуть с помощью встроеного эмулятора (версия 5.0.7), но со сторонним софтом операция выполняется весьма успешно.
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
Вот перечень проблем с которыми может столкнуться пользователь ZP при работе с флешом, поиском картинок и эмуляцией мышки.

1. не работает поиск картинки на странице - версия 5.3.0. На 5.3.1 скорей всего не пофиксили.
Устанавливаю в настройках точность совпадения 99%
Ищется флеш-кнопка с текстом, но находится другая, которая похожа, но текст в ней другой
Очень подозрительно быстро находится любое изображение. В сравнение я ставлю свою библиотеку (основанную также на aforge) которая, несмотря на то, что ищет только в определенной области и тратит времени гораздо больше, делает то что нужно.

2. не срабатывает Tab.MouseClick(x, y, "left", "click") по любому объекту в свернутом режиме - версия 5.3.0. На 5.3.1 так же не работает. На ZP 5.1.2.0 - срабатывает сразу и даже во флеше!

3. хочу обратить внимание на очень нужный но очень странный метод Tab.MouseMove(x, y) - любая версия, любой объект.
Теоретически это должен быть аналог Emulator.MouseMove, который работает отлично и без тормозов, но забирает мышку у пользователя. Мне такой эмулятор не нужен в принципе, потому что даже при перекрытом окне он уже не работает. А про многопоток я вобще помолчу.
Tab.MouseMove(x, y) - хороший вариант, но почему время выполнения этого метода такое продолжительное? Если мне нужно продвинуться по 250 точкам, то можно смело идти на кухню чай пить. Хотелось чтобы она не ждала с моря погоды и работала и даже при скрытом окне.
Я хоть и нашел выход в написании своей библиотеки, но это временно. Не каждый заказчик захочет добавлять себе какие-то левые библиотеки, если даже и разберется куда их ставить.
Вот такие пироги.
 
  • Спасибо
Реакции: bigcajones

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
1 , 2 - присылайте примеры на почту нам.
3 - это только в PM отрисовка идет. В ZP все быстро.
 

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 596
Благодарностей
1 014
Баллы
113
1 пункт у меня был еще в более старых версиях лечилось или перезагрузкой (компа) или привязкой со смещением к другим объектам
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
Вот примерный шаблон, в котором можно проверить то, что я описал выше. Перед кликом по области сверните мейкер и клика не будет.
http://dropmefiles.com/3OhNe
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
У меня вообще эти клики не работают в последнем билде. У вас работает шаблон без ошибок в развернутом виде?
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
У вас работает шаблон без ошибок в развернутом виде?
Клик в ПМ работает - должен кликнуть в левый верхний угол по ссылке. Поиск картинок - нет.
И по пункут 3. - в Постере все методы Tab.MouseMove() - не работают! Координаты точные, перед тем, как запустить в постере тестировал очень долго в ПМ. Так что все так же приходится пользоваться своей библиотекой, которая проще, но хоть работает.
 

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
901
Баллы
113
Можно поподробнее про координаты?
Сдается мне у вас классические грабли на тему того, что размер экрана ( и как следствие координаты) в постере и в мейкере разные.
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
Координаты как координаты. Все методы, которые эмулируют мыши: зенкины, мои - работают с одними и теми же координатами. Мои работают, зенкины - читайте выше. Я поддерживаю тему стабильности работы эмуляторов и работы с изображениями. Вопросы кривых рук хотел бы не обсуждать. Если у кого есть информаця о возможности замены на более стабильную ZennoLab.CommandCenter.dll с сохранением актуальной версии продукта или вдруг, так случилось, есть исходный код метода Tab.MouseMove, пишите, не стесняйтесь :-)
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Приложите пример на котором по координатам не получается клик. На Вашем примере непонятно, клики по картинке не работают.
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
В моем примере все просто - первый клик по картинке показывает что картинка находится и клик по картинке произходит. Повторный клик по той же картинке показывает что поиск по картинке не работает, находится что-то другое и кликается по нему. Третий блок кликает в левый верхний угол по координатам. В открытое (или перекрытое другим) окно клик произходит, в свернутое - нет. В версии 5.1.2 - работало (и сейчас работает только там), только я не собираюсь убеждать заказчика не обновляться.
По поводу Tab.MouseMove. В постере не работает. В этом я тоже не сомневаюсь, потому что явно вижу как обработчик событий обьекта <canvas> обрабатывает событие MOUSE_DOWN, а дальше все - творится что-то непонятное: нового события так и не произходит, но если я наведу свою мышку (руками, не програмно) то к моим действиям добавляются те незаконченные действия от Tab.MouseMove, которые произходят в пределах <canvas>.
Все что мне (да и всем пользователям) нужно: поиск по картинке и рабочие MouseClick с MouseMove от Tab'a в любых условиях.
 

Кто просматривает тему: (Всего: 4, Пользователи: 0, Гости: 4)