问题是自动化鼠标并与Flash应用程序交互

时间:2010-08-28 16:51:18

标签: c# .net flex flash mouse

我编写了一个C#工具,模拟用户与Windows 7环境进行交互。除了与几个在线Flash应用程序交互时,它才有效。正在生成鼠标移动和点击,但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应用程序中注册的鼠标事件的任何想法吗?

更新 看起来Flash应用程序正在接收鼠标单击。当C#app提交鼠标点击时,会显示他们的点击动画。即使显示Flash应用程序的鼠标点击动画,也没有任何反应。

4 个答案:

答案 0 :(得分:1)

不同的Flash应用程序会响应不同的mouse_events。你试过发送mousedown,mouseup等吗?此外,有时您需要先使用mousemove。我见过一些flash应用程序,其中一些按钮由mousedown工作,其他按钮由mouseup工作。还可以考虑在发送事件之前禁用键盘和鼠标,然后重新启用。

答案 1 :(得分:1)

我遇到了完全相同的问题。我发现的解决方案是在调用SendInput时不使用绝对模式,而只使用相对。这会将更多的工作放在您的代码中(您需要编写补间代码),但这样可以使闪存中的边界交叉检测代码被触发。

此外,如果您将指针移动到与Flash应用程序相同的线程上(即在浏览器控件中),请务必Application.DoEen

答案 2 :(得分:0)

您是否调查了FlexMonkey以进行Flex / AIR UI测试?我们已经取得了一些成功。 http://www.gorillalogic.com/flexmonkey

答案 3 :(得分:0)

还尝试通过尝试简单的Event.ENTER_FRAME来隐藏鼠标指针并监视文本框中的鼠标指针坐标(x& Y)。 我认为问题在于浏览器,而不是实际的Flash应用程序。用于显示闪存的浏览器,我认为它必须具有一些属性,这些属性可以通过Flash捕获鼠标数据。