如何通过C++;? 我在C++中编写了一个代码,在默认的应用程序中打开文件,比如在word Word中使用“代码> .doc < /Cord>”,现在我想计算打开文件到它的应用程序的时间。

如何通过C++;? 我在C++中编写了一个代码,在默认的应用程序中打开文件,比如在word Word中使用“代码> .doc < /Cord>”,现在我想计算打开文件到它的应用程序的时间。,c++,windows,file,C++,Windows,File,为此,我需要知道加载到该应用程序中的文件的百分比。但在过去的7天里,我找不到任何合适的解决方案。有人能帮我解决这个问题吗 如果我正在使用windows,那么windows任务管理器是否可以帮助我执行此操作?如果第三方进程没有发出已加载内容的信号(例如,通过某个输出流),一种方法是查看进程正在打开和关闭的文件句柄。我认为这与Process Explorer等“任务管理器”查看流程文件句柄的方式类似。但是,如果进程在完成“加载”后不关闭文件句柄,则无法获得准确的时间。此外,您将无法获得加载数据量的“

为此,我需要知道加载到该应用程序中的文件的百分比。但在过去的7天里,我找不到任何合适的解决方案。有人能帮我解决这个问题吗


如果我正在使用windows,那么windows任务管理器是否可以帮助我执行此操作?

如果第三方进程没有发出已加载内容的信号(例如,通过某个输出流),一种方法是查看进程正在打开和关闭的文件句柄。我认为这与Process Explorer等“任务管理器”查看流程文件句柄的方式类似。但是,如果进程在完成“加载”后不关闭文件句柄,则无法获得准确的时间。此外,您将无法获得加载数据量的“实时”百分比。

您试图做的不仅是不可能的,甚至毫无意义

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

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


如果您只关心某些特定的应用程序,并且这些应用程序有一个COM自动化接口(WMP和Word都有),那么它们可能有一些方法或事件,可以告诉您何时“加载”了一个文件(意味着它们已经读了足够多的文件,可以开始播放/显示/等等),或者何时“完成”了一个文件(意思是转到下一个轨道,或者其他什么),但是没有通用的答案;不同的应用程序会有不同的自动化接口。(作为一个旁注,你真的不想从C++中做COM自动化,除非你真的必须这样做;从JScript、VBScript或你喜欢的.NET语言……)要容易得多。

这很难,因为您正在生成其他进程,没有真正的“知道”方法一个应用程序已经完成加载。至少不是一般意义上的。嗯,这只是一个随机的想法,但也许你可以在打开应用程序后关闭它,看看进程什么时候死了?这可能是一个粗略的衡量,并且依赖于程序在被终止之前完全加载,这可能不是事实。看起来ime将因应用程序而异,所以我不确定是否有一种通用的方法来执行。如果我使用windows,windows任务管理器可以帮助我执行此操作吗?