5

我正在创建一个模拟用户输入(鼠标和键)的框架。

该框架将为 DUnit 测试的简单实现提供一个 API。

我目前的一个大问题是等待应用程序空闲。

我有一个服务器 (TCP),它接收诸如“键入文本”、“按键”、“单击 XY”之类的命令……我需要等待这些命令被处理,然后返回客户端 API 以继续运行测试的下一步。

由于我的服务器通过线程接收并执行操作,因此它不会冒捕获执行的风险,就像单击将显示模式消息的按钮一样。

我目前正在使用 ApplicationEvents.OnIdle 来帮助我,但在某些情况下它不能很好地工作。

我也尝试使用 WaitForInputIdle 但它不能解决我的问题,因为在处理用户输入后应用程序可能仍在处理操作......

有人能帮我吗?

4

2 回答 2

0

由于您可以控制目标应用程序(我假设这是因为您提到了 ApplicationEvents 的 OnIdle 事件),我会查看 RegisterWindowMessage,并有一条消息响应(例如,将测试系统的 HWND 作为 LParam 或 WParam 传递)当应用程序不再运行任何东西时。

因为自定义消息在中央消息队列中排队,所以您应该在应用程序完成您通过模拟输入事件启动的操作后立即获得响应。

于 2012-07-03T20:25:51.483 回答
0

你是如何模拟用户输入的?您是否通过 PostMessage 提供程序消息?如果是这样,您可以切换到 SendMessage,它会一直阻塞,直到程序处理完发送的消息。

于 2012-07-03T17:51:46.077 回答