Проблема автоматизации мыши и взаимодействия с приложениями Flash - PullRequest
3 голосов
/ 28 августа 2010

Я написал инструмент на C #, который имитирует взаимодействие пользователя со средой Windows 7. Это работает за исключением случаев, когда вы взаимодействуете с парой онлайн-приложений. Движения мыши и щелчки генерируются, но приложения Flash не получают их. Я думаю, что мне нужно генерировать события мыши более низкого уровня, но не могу это подтвердить.

Я испробовал несколько разных механизмов:

[DllImport("user32.dll")]
static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);

[DllImport("user32.dll", SetLastError = true)]
private static extern uint SendInput(uint nInputs, INPUT[] pInputs, int cbSize);

Кто-нибудь сталкивался с этой проблемой? Любые идеи, как я могу генерировать события мыши, которые будут регистрироваться в приложении Flash?

Обновление: Похоже, флэш-приложения получают щелчок мыши. Их анимация щелчка отображается, когда приложение C # отправляет щелчок мышью. Тем не менее, ничего не происходит, даже если отображается анимация щелчка мыши в приложении Flash.

Ответы [ 4 ]

1 голос
/ 26 июня 2011

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

Кроме того, если вы перемещаете указатель в том же потоке, что и флэш-приложение (т. Е. В элементе управления браузера), убедитесь, что Application.DoEen

1 голос
/ 10 октября 2010

Различные flash-приложения реагируют на разные mouse_events.Вы пытались отправить mousedown, mouseup и т. Д.?Кроме того, иногда вам придется сначала использовать mousemove.Я видел некоторые флеш-приложения, в которых некоторые кнопки работают по mousedown, а другие по mouseup.Также рассмотрите возможность отключения клавиатуры и мыши непосредственно перед отправкой событий и повторного включения после.

0 голосов
/ 21 декабря 2010

Также попробуйте спрятать указатель мыши и отслеживать жесты указателя мыши (x & Y) в текстовом поле, используя простой Event.ENTER_FRAME.Я думаю, что проблема с браузером, а не с приложением Flash.Браузер, который вы используете для отображения Flash, я думаю, что он должен иметь некоторые свойства, которые позволяют захватывать данные мыши с помощью Flash.

0 голосов
/ 05 октября 2010

Вы исследовали FlexMonkey для тестирования Flex / AIR UI? У нас был некоторый успех с этим. http://www.gorillalogic.com/flexmonkey

...