如何计算将文件加载到应用程序中的时间C++

How to calculate time to load a file into a application thorugh C++?

本文关键字:应用程序 C++ 时间 加载 文件 何计算 计算      更新时间:2023-10-16

我已经用C++编写了一个代码,可以在其默认应用程序中打开文件,就像在MS-Word中一样.doc现在我想计算将文件打开到其应用程序中的时间。

为此,我需要知道加载到该应用程序中的文件的百分比。但是从过去 7 天开始,我找不到任何合适的解决方案。那么有人可以帮助我解决这个问题吗?

如果我使用的是Windows,那么Windows任务管理器可以帮助我做到这一点吗?

你想做的事情不仅是不可能的,甚至没有意义。

当您在 WMP 中播放 MP3 时,它不会将整个文件加载到内存中。相反,它一次将文件的一小部分映射到内存中,以便它可以在播放时即时解码 MP3。(我想如果你一直播放这首歌,没有停止或跳过或快进或快退,它最终会读取文件的每个字节,可能在歌曲结束前几秒钟完成,但我怀疑这就是你要找的。

同样,Word 不会将任何整个.doc文件读入内存(除非它非常小)。这就是它如何在不使用大量内存的情况下编辑巨大的文件。(同样,如果您翻阅整个文件,它最终可能会读取每个字节 - 就此而言,它最终可能会将足够的文件复制到自动保存备份文件中,以至于不再需要查看原始文件 - 但同样,我怀疑这就是您要查找的内容。

如果您只关心某些特定的应用程序,并且这些应用程序具有COM自动化界面(就像WMP和Word一样),则它们可能具有方法或事件,这些方法或事件将告诉您何时完成"加载"文件(意味着他们已经阅读了足够的文件以开始播放/显示/等),或者当他们"完成"文件(意味着移动到下一曲目, 或其他什么),但对此没有通用的答案;不同的应用程序将具有不同的自动化接口。(而且,作为旁注,除非你真的必须这样做,否则你真的不想从C++做COM自动化;从jscript,vbscript或你最喜欢的.NET语言中要容易得多......)

如果第三方进程没有发出它已加载某些内容的信号,例如,通过某些输出流,一种方法是查看进程打开和关闭的文件句柄。我认为这将类似于像进程资源管理器这样的"任务管理器"如何能够查看进程的文件句柄。但是,如果该过程在完成"加载"后没有关闭文件句柄,那么您将无法获得准确的时间。此外,您将无法获得已加载数据量的"实时"百分比。