2012-03-22 102 views
1

我想通过C++代码从另一个进程编程式获取正在运行的Metro应用程序的进程ID。我有该应用程序的静态信息,如名称,全名等。什么是API来做到这一点? 我不能使用EnumProcess自运行Metro应用被应用容器WWAHost.exe内运行,所以无法知道其运行WWAHost.exe进程的实际运行 Metro应用。获取正在运行的metro应用程序的进程ID

在进程管理器,我注意到,这是我的执行metro应用的WWAHost.exe进程的当前目录是一样的Metro应用的安装位置。这可能是所有正在运行的应用程序容器之间的差异化因素吗?如果是,那么获取其他进程的当前目录的方式是什么?

要更新,我已经得到了一些在MSDN论坛对此的解决方案。这里的链接:

http://social.msdn.microsoft.com/Forums/en-US/windowsgeneraldevelopmentissues/thread/c9665bf4-00e4-476c-badb-37126efd3f4b/

但是,该解决方案使用Windows上的无证机制获取另一个进程的当前目录。我只想在没有其他方法的情况下使用该解决方案。

回答

1

您可以使用GetCurrentProcessId获取进程ID。

+0

我错过了一个事实,即我需要来自另一个进程的地铁应用程序的进程ID。更新了问题以反映这一点。 – user1273404 2012-03-26 08:45:24

+0

据我所知,没有电话这样做。所以你可能坚持你上面提到的解决方案。 – sarvesh 2012-03-27 00:40:53

0

你可以使用GetPackageIdGetPackagePath,然后从AppxManifest.xml

+0

但该信息不会提供任何提示,哪些进程托管该应用程序,尤其是基于Javascript的应用程序 – user1273404 2012-03-29 09:41:16

1

了解应用信息要呼叫GetApplicationUserModelId每个WWAHost过程。

提供的示例应用程序允许您在一个PID传,并取回有关应用程序的信息。例如:

C:\src\GetAppInfo\Debug>GetAppInfo.exe 7400 
Process 7400 (handle=00000044) 
Microsoft.BingWeather_8wekyb3d8bbwe!App 
2

使用GetForegroundWindow获得当前活动窗口,使用后GetWindowThreadProcessId让当前窗口的PID,则有效的,如果是一个WindowsStore应用与IsImmersiveProcess,然后GetPackageId到获取应用程序包信息,如包名称,版本...

相关问题