我正在创建一个模拟用户输入(鼠标和键)的框架。
该框架将为简单实施DUnit测试提供API。
目前我遇到的一个重大问题是等待应用程序空闲。
我有一个服务器(TCP)接收“类型文本”,“按键”,“单击XY”等命令...我需要等待处理这些命令,然后返回到客户端API继续运行下一步测试。
由于我的服务器通过线程接收并执行操作,因此不存在捕获执行的风险,例如单击将显示模态消息的按钮。
我目前正在使用ApplicationEvents.OnIdle来帮助我,但在某些情况下它不能很好地工作。
我也尝试过使用WaitForInputIdle,但只是它没有解决我的问题,因为应用程序在处理用户输入后仍然可能正在处理动作......
有人可以帮助我吗?
答案 0 :(得分:0)
您如何模拟用户输入?您是否通过PostMessage提供程序消息?如果是这样,您可以交换到SendMessage,它会阻止程序处理发送的消息。
答案 1 :(得分:0)
由于您可以控制目标应用程序(我假设这是因为你提到了ApplicationEvents的OnIdle事件),我会查看RegisterWindowMessage,并有一条消息响应(例如传递一个HWND)当应用程序不再运行任何东西时,测试系统为LParam或WParam。
因为自定义消息在中央消息队列中排队,所以一旦应用程序通过模拟输入事件完成其操作,您就应该得到响应。