我在Windows 8.1中有一个应用程序切换器,它枚举了所有顶级窗口(user32中的EnumWindows)。不幸的是,此调用将包括已暂停和逻辑删除的Windows应用商店应用。通过检查是否所有线程都被挂起并且waitreason也被挂起,我可以检测进程何时被挂起。然而,我可以看到它们是否被暂停或被墓碑化之间没有任何区别,我会像ALT-TAB一样显示已暂停的应用程序,但不会显示已被删除的应用程序。我还尝试在Process Explorer中看到这些进程之间的任何差异,但没有成功。
TLDR;
有什么方法可以从Windows服务或桌面应用程序查询进程以查看它是否被逻辑删除(而不仅仅是暂停)?
答案 0 :(得分:2)
当一个Windows应用商店应用程序被终止,因为系统需要释放资源 - 我认为这意味着被逻辑删除 - 然后它的进程被完全删除(也就是说,它们从任务管理器中消失)。
要区分使用Alt + F4,关闭按钮或向下滑动手势暂停的应用和已关闭的应用,请在从EnumWindows返回的手柄上调用IsWindowVisible。如果它是假的,那么应用程序已被逻辑删除;如果它仍然是真的,则应用程序暂停。