如何计算将文件加载到应用程序中的时间C++
How to calculate time to load a file into a application thorugh C++?
我已经用C++编写了一个代码,可以在其默认应用程序中打开文件,就像在MS-Word中一样.doc
现在我想计算将文件打开到其应用程序中的时间。
为此,我需要知道加载到该应用程序中的文件的百分比。但是从过去 7 天开始,我找不到任何合适的解决方案。那么有人可以帮助我解决这个问题吗?
如果我使用的是Windows,那么Windows任务管理器可以帮助我做到这一点吗?
你想做的事情不仅是不可能的,甚至没有意义。
当您在 WMP 中播放 MP3 时,它不会将整个文件加载到内存中。相反,它一次将文件的一小部分映射到内存中,以便它可以在播放时即时解码 MP3。(我想如果你一直播放这首歌,没有停止或跳过或快进或快退,它最终会读取文件的每个字节,可能在歌曲结束前几秒钟完成,但我怀疑这就是你要找的。
同样,Word 不会将任何整个.doc文件读入内存(除非它非常小)。这就是它如何在不使用大量内存的情况下编辑巨大的文件。(同样,如果您翻阅整个文件,它最终可能会读取每个字节 - 就此而言,它最终可能会将足够的文件复制到自动保存备份文件中,以至于不再需要查看原始文件 - 但同样,我怀疑这就是您要查找的内容。
如果您只关心某些特定的应用程序,并且这些应用程序具有COM自动化界面(就像WMP和Word一样),则它们可能具有方法或事件,这些方法或事件将告诉您何时完成"加载"文件(意味着他们已经阅读了足够的文件以开始播放/显示/等),或者当他们"完成"文件(意味着移动到下一曲目, 或其他什么),但对此没有通用的答案;不同的应用程序将具有不同的自动化接口。(而且,作为旁注,除非你真的必须这样做,否则你真的不想从C++做COM自动化;从jscript,vbscript或你最喜欢的.NET语言中要容易得多......)
如果第三方进程没有发出它已加载某些内容的信号,例如,通过某些输出流,一种方法是查看进程打开和关闭的文件句柄。我认为这将类似于像进程资源管理器这样的"任务管理器"如何能够查看进程的文件句柄。但是,如果该过程在完成"加载"后没有关闭文件句柄,那么您将无法获得准确的时间。此外,您将无法获得已加载数据量的"实时"百分比。
- 试图在visual studio上用C++创建一个桌面应用程序
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 在C应用程序中运行C++(带有STL)函数
- 使用VerQueryValue检索应用程序的文件描述
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用调试/崩溃报告将应用程序部署到客户端
- C++控制台应用程序阻止退出
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 将应用程序从32位移植到64位时出现问题
- 如何改变c++应用程序的视觉效果
- WM_CTLCOLORSTATIC从未在WIN32应用程序中触发
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- phytec phyBOARD iMX-6在从闪存而不是SD卡运行qt5 opengles应用程序时表现不佳(FPS减半
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 如何从Windows应用程序输出到标准?
- C++应用程序 MySQL odbc 数据库连接错误:在引发"otl_tmpl_exception<>"实例后终止调用
- 如何在 64 位 vb.net Windows 应用程序中引用 32 位 dll
- 如果整个应用程序是虚拟映射的,为什么 new 会进行系统调用?