Как узнать, что приложение Магазина Windows завершено в C # или VB? - PullRequest
0 голосов
/ 11 марта 2019

Я знаю, что приложения Магазина Windows выполняются в изолированном режиме (песочница).Поэтому я запускаю приложение (например, Microsoft Photos) с помощью IApplicationActivationManager.ActivateForFile, отображается отображаемое изображение, а возвращаемое значение функции дает мне идентификатор процесса (например, 6544 для процесса с именем ApplicationFrameHost и заголовок главного окна «Фотографии ». Но когда я регистрирую обработчик на событие .Exited() соответствующего процесса, я не получаю информацию о закрытии приложения (в отличие от приложения Win32 / 64, такого как notepad.exe).

Кроме того, неприятно, что я получаю один и тот же идентификатор процесса для следующего изображения, которое будет отображаться - оба изображения теперь хранятся в одном и том же процессе. И все отображаемые впоследствии изображения также возвращают тот же идентификатор процесса ... и мой .Exited -Обработчик по-прежнему не вызывается, ни в случае, если я закрываю только одно из нескольких запущенных Photo-Apps, ни после того, как, наконец, я закрыл их все.

Так как я не мог выдать уведомление о процессе с моим изображением было закрытоЯ думал о поиске, если он все еще на дисплее. Я исследовал все свойства процесса, в том числеUding ProcessThreadCollection и ProcessStartInfo, но не нашел ничего, чтобы идентифицировать мои отображаемые изображения.И даже когда я исследую заголовки MainWindowsTitles, просматривая открытые окна (с User32.EnumWindows() или WindowsInterop.GetRootWindowsOfProcess(p.Id), это не дает мне больше, чем пять раз «Фотографии» для отображаемых изображений - увы, без имен файлов отображаемых изображений!

Любая подсказка, которую можно обойти, будет принята с благодарностью!

1 Ответ

0 голосов
/ 11 марта 2019

Вы можете использовать AppDiagnosticInfoWatcher, чтобы отслеживать состояние приложения и получать уведомления при его изменении:

https://docs.microsoft.com/en-us/uwp/api/windows.system.appdiagnosticinfowatcher

...