C# 确定Windows应用商店应用程序是否已从Windows服务暂停或删除

C# 确定Windows应用商店应用程序是否已从Windows服务暂停或删除,c#,c++,windows,winapi,windows-store-apps,C#,C++,Windows,Winapi,Windows Store Apps,我在Windows8.1中有一个应用程序切换器,它枚举所有顶级窗口(user32中的EnumWindows)。不幸的是,此调用将包括挂起和删除的Windows应用商店应用程序。我可以通过检查是否所有线程都挂起以及waitreason是否也挂起来检测进程何时挂起。然而,我看不出它们是否被暂停或删除,我想,像ALT-TAB一样,显示暂停的应用程序,但不显示删除的应用程序。我还尝试在Process Explorer中查看这些流程之间的任何差异,但没有成功 TLDR 有没有什么方法可以让我从Window

我在Windows8.1中有一个应用程序切换器,它枚举所有顶级窗口(user32中的EnumWindows)。不幸的是,此调用将包括挂起和删除的Windows应用商店应用程序。我可以通过检查是否所有线程都挂起以及waitreason是否也挂起来检测进程何时挂起。然而,我看不出它们是否被暂停或删除,我想,像ALT-TAB一样,显示暂停的应用程序,但不显示删除的应用程序。我还尝试在Process Explorer中查看这些流程之间的任何差异,但没有成功

TLDR


有没有什么方法可以让我从Windows服务或桌面应用程序中查询一个进程,看看它是否被删除(而不仅仅是挂起)?

当一个Windows应用商店应用程序因为系统需要释放资源而终止时(我想你说的是删除),它的进程就会被完全删除(也就是说,它们从任务管理器中消失)


区分已暂停和已“关闭”的应用程序使用Alt+F4、关闭按钮或向下滑动手势,在从EnumWindows返回的句柄上调用IsWindowVisible。如果为false,则该应用程序已被删除;如果为true,则该应用程序仅暂停。

当按Alt-F4关闭Windows应用商店应用程序时,将其拖放到屏幕底部或按closWindows 8.1 update 1中的e按钮都将导致其不再显示在任务栏(8.1 update 1)或ALT-TAB中的状态。该进程虽然已挂起,但仍在运行。我以为它处于墓碑状态,但我不确定。但是,我无法从我找到的任何api中查询该进程并查看它是否已“关闭”或者只是因为不再显示在屏幕上而暂停。感谢您的澄清。我不知道答案,但会检查它。答案是调用窗口句柄上的IsWindowVisible;一个被删除的应用程序将此设置为false,但暂停的应用程序仍将为true。我已经相应地更新了原始答案。我担心tombs色调的应用程序仍然有一个有效的窗口句柄。可以通过打开Bing地图并通过将其拖动到om屏幕底部或单击“关闭”按钮来关闭来复制。从ALT-TAB和任务栏中消失,但进程仍在运行(但已挂起),主窗口句柄仍然有效。