我知道Windows Store Apps是在隔离模式(沙箱)中执行的。因此,我使用IApplicationActivationManager.ActivateForFile
启动了一个应用程序(例如Microsoft Photos),显示了提供的图像,并且该函数的返回值为我提供了进程ID(例如,名为'ApplicationFrameHost'的进程的6544和主窗口标题但是,当我在相应过程的.Exited()
事件中注册处理程序时,关闭该应用程序时不会收到通知(与notepad.exe之类的Win32 / 64应用程序不同)。>
此外,令人不快的是,我也收到相同的处理ID,以便显示下一个图像-现在,两个图像都由相同的处理保存。并且随后显示的所有图像也返回相同的过程ID ...,并且.Exited
处理程序仍然未被调用,以防万一我只关闭了几个正在运行的Photo-Apps中的一个,或者最后也没有关闭过他们全部。
由于我无法关闭有关图像处理的通知,因此我想查找它是否仍在显示中。我调查了包括ProcessThreadCollection
和ProcessStartInfo
在内的所有Process资产,但没有发现任何可识别我显示的图像的东西。而且,即使我通过遍历打开的窗口(使用User32.EnumWindows()
或WindowsInterop.GetRootWindowsOfProcess(p.Id)
来调查MainWindowsTitles时,对于显示的横屏图像来说,这也不会给我更多的横屏时间“照片”-without可惜没有图像文件名显示!
任何绕开它的提示将不胜感激!
答案 0 :(得分:0)
您可以使用AppDiagnosticInfoWatcher监视应用程序的状态并在更改时获取通知:
https://docs.microsoft.com/en-us/uwp/api/windows.system.appdiagnosticinfowatcher