以编程方式,这个应用程序如何检测到程序已准备好input

我需要构build一个小型的C#应用​​程序来测量可定义应用程序的启动时间。 我发现这个免费的工具:

http://www.passmark.com/products/apptimer.htm

这正是我所需要的,但我被要求创build一个更具体的公司内部版本,因​​为我们需要数据库日志logging和其他一些东西。

我了解如何复制除“input空闲”以外的所有function。 我试图search这个术语,但我还没有find任何有用的参考。 任何人都可以指向正确的方向来检查应用程序“input空闲”状态吗?

它指的是Windows WaitForInputIdle API,当应用程序进入一个空闲的消息循环状态时,它会回调你:

http://blogs.msdn.com/b/oldnewthing/archive/2010/03/25/9984720.aspx

你可以打电话

WaitForInputIdle( ProcessInfo.hProcess, INFINITE ); 

等待指定的过程完成其初始输入的处理,并等待用户输入未挂起输入,或等到超时间隔过去。

http://msdn.microsoft.com/en-us/library/windows/desktop/ms687022(v=vs.85).aspx

http://www.codeproject.com/Articles/137/Sending-a-message-to-the-Main-Frame-Window-of-Anot

System.Diagnostics有一个名为Process.WaitForInputIdle()的方法,它将检查进程是否空闲。

注意: 这只适用于具有某种界面的程序(和一个消息循环)。

WaitForInoutIdle()的MSDN

检查这个前面的问题是一个很好的例子,让你开始 – 所有你需要做的就是添加闲置方法,并挂钩目标进程:

另外检查一下如何真正检查目标应用程序是否有接口的一些很好的建议。 你可能不需要这个,因为你可能正在使用已知的应用程序。