【发布时间】:2019-08-01 22:41:05
【问题描述】:
我知道 Windows 应用商店应用程序以隔离模式(沙盒)执行。因此,我使用IApplicationActivationManager.ActivateForFile 启动了一个应用程序(例如 Microsoft Photos),提供的图像被显示并且函数的返回值给了我进程 ID(例如,6544 用于名为“ApplicationFrameHost”的进程和主窗口标题“照片'。但是当我为相应进程的.Exited() 事件注册处理程序时,我在关闭应用程序时不会收到通知(与 notepad.exe 等 Win32/64 应用程序不同)。
此外,令人不快的是,下一张要显示的图像也收到了相同的进程 ID - 现在两个图像都由同一个进程保存。并且随后显示的所有图像也返回相同的进程ID......并且我的.Exited-Handler 仍然没有被调用,无论是我现在只关闭几个正在运行的照片应用程序中的一个,还是在我最终关闭所有他们。
由于我无法发出有关我的图像已关闭的过程的通知,我想查看它是否仍在显示。我调查了 Process 的所有属性,包括 ProcessThreadCollection 和 ProcessStartInfo,但没有发现任何可以识别我显示的图像。甚至当我通过循环打开打开的窗口来调查 MainWindowsTitles 时(使用 User32.EnumWindows() 或 WindowsInterop.GetRootWindowsOfProcess(p.Id) 这并没有给我超过 5 倍的“照片”显示图像 - 唉,没有显示图像的文件名!
任何解决此问题的提示将不胜感激!
【问题讨论】:
标签: c# vb.net uwp windows-10-universal kill-process