我正试图从C_访问应用程序历史记录。我想提供与任务管理器中相同的信息,但找不到api/example。当然,我实现了一个桌面应用程序。
指定问题:我对CPU/RAM不感兴趣。我唯一想得到的就是时间。
更新
要准确显示我在说什么,请看这个屏幕:
最佳答案
我对此做了一些研究,因为我发现Metro应用程序如何集成到现有的流程结构中是很有趣的。
正如其他人在这里指出的那样,以一种漂亮的、受支持的api方式来获取您想要的信息是不可能的。
但是,每个应用程序都是作为不同的进程启动的,对于进程,有已知的方法可以获得运行时间、CPU时间等。
如果您找到与您的Windows 8应用程序相对应的进程,您将能够获得所需的信息。
有些应用程序很容易被发现。它们只是一个可执行文件,就像任何其他桌面应用程序一样,具有适当的进程名和描述。
例如,在此图片中的“地图”、“Windows阅读器”和“Microsoft照相机应用程序”:
其他一些应用程序比较难发现。它们托管在由wwahost.exe
executebe启动的进程中。我只能通过查看模块列表来确定应用程序的名称。
这是Bing
应用程序:
若要枚举进程中的模块和映射文件,可以使用WiApAPI VirtualQueryEx和GetMappedFileName。
然后要查找位于%programfiles%\WindowsApps
的文件。这是Windows为其应用程序保存所有应用程序文件的文件夹。
每个应用程序都有一个.pri
文件。此文件包含应用程序的二进制元数据。您可以使用它从托管应用程序的进程中查找该应用程序的名称。在带有.pri文件的同一文件夹中有一个AppxManifest.xml
,您可以在其中找到有关该应用程序的各种附加信息。
我将试着总结一下我的写作:
使用winapi枚举进程并获取所需的所有信息(运行时、cpu时间等)。
枚举每个进程的映射文件并查找ressources.pri
。此文件所在的目录中有应用程序名。
作为奖励,请阅读AppxManifest.xml
文件以获取应用程序的其他信息。您可能需要管理员权限或其他权限才能读取此文件。