Я знаю, что приложения Магазина 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)
, это не дает мне больше, чем пять раз «Фотографии» для отображаемых изображений - увы, без имен файлов отображаемых изображений!
Любая подсказка, которую можно обойти, будет принята с благодарностью!