3

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

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

这正是我需要的,但我被要求创建一个更特定于公司的内部版本,因​​为我们需要数据库日志记录和其他一些东西。

我了解如何复制除“输入空闲”之外的所有功能。我试图搜索这个词,但我没有找到任何有用的参考资料。谁能指出我检查应用程序“输入空闲”状态的正确方向?

4

3 回答 3

6

你可以打电话

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

于 2013-01-09T16:58:29.123 回答
6

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

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

于 2013-01-09T16:58:33.873 回答
4

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

注意:这仅适用于具有某种接口的程序(和消息循环)。

WaitForInoutIdle() 的 MSDN

检查上一个问题以获得一个很好的示例来帮助您入门 - 您需要做的就是添加 idle 方法,并连接目标进程:

还要检查这个以获得一些关于如何实际检查目标应用程序是否有接口的好建议。不过,您可能不需要它,因为您可能正在使用已知的应用程序。

于 2013-01-09T17:00:23.483 回答