我需要构建一个小型C#应用程序来测量可定义应用程序的启动时间。我找到了这个免费工具:
http://www.passmark.com/products/apptimer.htm
这正是我所需要的,但我被要求创建一个更具公司特定的内部版本,因为我们需要数据库记录和其他一些东西。
我理解如何复制除“输入空闲”之外的所有功能。我试图搜索这个术语,但我没有找到任何有用的参考。任何人都可以指出我正确的方向检查应用程序“输入空闲”状态吗?
答案 0 :(得分:7)
你可以打电话
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
答案 1 :(得分:7)
它指的是Windows WaitForInputIdle API,当应用程序进入空闲消息循环状态时,它会回调您:
http://blogs.msdn.com/b/oldnewthing/archive/2010/03/25/9984720.aspx
答案 2 :(得分:5)
System.Diagnostics有一个名为Process.WaitForInputIdle()的方法,它将检查进程是否空闲。
注意:这仅适用于具有某种界面的程序(以及消息循环)。
Check this previous question 是一个很好的例子来帮助你开始 - 你需要做的就是添加idle方法,然后连接目标进程:
Also check this有关如何实际检查目标应用程序是否具有接口的一些好建议。您可能不需要这个,因为您可能正在使用已知的应用程序。