概述:
我需要通过进程/ PID检测给定的应用程序是否在WinRT(也称为“Metro”)模式下运行。这样做有好办法吗?
尝试和观察失败:
有什么想法吗?请省略任何“不要那样做”或“为什么?”答案,因为它们对这个特定问题没有帮助。
答案 0 :(得分:1)
BOOL WINAPI IsImmersiveProcess(_In_ HANDLE hProcess);
如果进程在Metro模式下运行,则返回true。请注意,如果检测应用程序作为服务运行,则此调用始终返回false。
答案 1 :(得分:0)
Here使用Process和C#应用程序中与该进程关联的模块列表的一种可能解决方案。
答案 2 :(得分:0)
如果Metro应用程序正在运行WWA Applet,则从PID获取命令行参数并查看它是否为WWAHOST.exe。并非所有的metro应用程序都以WWA applet的形式运行,IE在Metro模式下作为独立的exe运行。
这可能听起来像一个kludge,但我在检测IE是否处于地铁模式时工作。 地铁模式下的IE进程仍然是iexplore.exe。它是Metro模式下的根父进程是Wininit.exe,其中非城域模式是explorer.exe。 因此,找到IE的PID的根父PID,然后从父的PID获取父进程名称,然后将其与“Wininit.exe”或“Explorer.exe”进行比较