如何知道应用程序是否空闲

时间:2012-07-03 17:14:07

标签: delphi

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

该框架将为简单实施DUnit测试提供API。

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

我有一个服务器(TCP)接收“类型文本”,“按键”,“单击XY”等命令...我需要等待处理这些命令,然后返回到客户端API继续运行下一步测试。

由于我的服务器通过线程接收并执行操作,因此不存在捕获执行的风险,例如单击将显示模态消息的按钮。

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

我也尝试过使用WaitForInputIdle,但只是它没有解决我的问题,因为应用程序在处理用户输入后仍然可能正在处理动作......

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

因为自定义消息在中央消息队列中排队,所以一旦应用程序通过模拟输入事件完成其操作,您就应该得到响应。