我编写了一个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应用程序的鼠标点击动画,也没有任何反应。
答案 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捕获鼠标数据。