如果进程要求用户输入,请以编程方式查找

jde*_*aan 5 c# user-interface automation modal-dialog

如果另外一个外部应用程序(本机,java,.NET或其他......)目前要求用户输入,我如何以编程方式(在C#中)确定?这可以在托管代码中完全完成吗?

我正在寻找的是:

static Boolean IsWaitingForUserInput(String processName)
{
    ???
}
Run Code Online (Sandbox Code Playgroud)

通过要求用户输入我的意思是当应用程序要求用户输入一些数据或退出错误消息(模态对话框)并且不再能够执行其正常任务时.正在等待用户绘制内容的绘图应用程序不在此处.

PS:经过编辑以反映底部的评论并使关注更加清晰,一些评论和答案可能与问题不完全一致.在评估答案和评论时要考虑到这一点.

MSa*_*ers 9

这通常是不可能的.以一种常见的应用程序,一个文字处理器为例.现在,它将在后台运行拼写检查,它会定期自动保存您的文档,等等.然而,从用户的角度来看,它一直在等待输入.

另一种常见情况是幻灯片浏览器.在任何时候你都可以按一个键来推进幻灯片.然而,您的典型用户不会将其视为"等待输入".

总结一下:"等待输入"是一种主观状态,因此无法以编程方式确定.