Получить идентификатор процесса запущенного приложения метро - PullRequest
1 голос
/ 22 марта 2012

Я хочу получить идентификатор процесса запущенного приложения Metro программно через код C ++ из другого процесса.У меня есть статическая информация об этом приложении, такая как имя, полное имя и т. Д. Что такое API для этого?Я не могу использовать EnumProcess, так как запущенное приложение Metro запускается внутри контейнера приложения WWAHost.exe, поэтому я не могу знать, какой из запущенных процессов WWAHost.exe на самом деле выполняет мое приложение Metro.*

В обозревателе процессов я заметил, что текущий каталог процесса WWAHost.exe, который выполняет мое приложение Metro, совпадает с местом установки приложения метро.Может ли это быть дифференцирующим фактором между всеми контейнерами запущенных приложений?Если да, как можно получить текущий каталог другого процесса?

Чтобы обновить, у меня есть какое-то решение по этому поводу на форумах msdn.Вот ссылка:

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

Но решение использует недокументированный механизм в Windows для получения текущего каталога другого процесса.Я хотел бы использовать это решение, только если нет другого пути.

Ответы [ 4 ]

2 голосов
/ 25 августа 2015

Используйте GetForegroundWindow , чтобы получить текущее активное окно, после этого используйте GetWindowThreadProcessId , чтобы получить PID текущего окна, затем действительное, если это приложение WindowsStore с IsImmersiveProcess ,затем GetPackageId , чтобы получить информацию о пакете приложения, такую ​​как имя пакета, версия ...

1 голос
/ 29 октября 2013

Вы хотите вызвать GetApplicationUserModelId для каждого процесса WWAHost.

Предоставленный образец приложения позволяет вам ввести PID и получить информацию о приложении. Например:

C:\src\GetAppInfo\Debug>GetAppInfo.exe 7400
Process 7400 (handle=00000044)
Microsoft.BingWeather_8wekyb3d8bbwe!App
1 голос
/ 22 марта 2012

Вы можете использовать GetCurrentProcessId , чтобы получить идентификатор процесса.

0 голосов
/ 28 марта 2012

Вы можете использовать GetPackageId и GetPackagePath , а затем прочитать информацию о приложении из AppxManifest.xml

...