2012-03-22 155 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到獲取應用程序包信息,如包名稱,版本...

相關問題