是否有(或多或少)简单的方法来强制Windows应用程序的进程挂起,而不是响应?或者这完全取决于相关的申请/流程?
编辑:我想要尝试的是:有问题的应用程序有一个Web GUI,后台有几个正在运行的进程。有报告称,当其中一个进程崩溃时,Web GUI停止响应。我想尝试重现这一点,但我意识到这可能不那么容易。
答案 0 :(得分:4)
如果您可以获得应用程序中某个线程的句柄,您可以调用SuspendThread()
,这将使该线程暂停。
(请注意,我的回答是假设你想让另一个应用程序挂起。有很多方法可以让你的自己的应用程序挂起,故意或不挂起。)
为了回应您的编辑,我记得Process Explorer能够手动挂起进程中的特定线程。这绝对值得一试。
答案 1 :(得分:1)
这取决于你的意思是“挂”和“不回应”。就用户而言,任何停止处理消息的GUI应用程序都将无响应。
答案 2 :(得分:0)
while(true){}
答案 3 :(得分:0)
一种简单的方法是将要挂起的应用程序的优先级设置为最小值,然后在应用程序中以低优先级无限运行循环。这会使另一个应用程序挨饿。不完美但简单
答案 4 :(得分:0)
如果您可以更改该流程的代码,只需在其中的某处插入for(;;);
即可。如果您无法更改代码,则暂停进程的最简单方法是使用Process Explorer。只需右键单击想要的流程,然后选择菜单中的暂停。
答案 5 :(得分:0)
Windows Sysinternals实用程序Process Explorer能够暂停整个进程并挂起单个线程。我已使用Process Explorer v16.05确认了这两个功能。我发现这对于模拟问题中描述的性质的失败很有用。
这将适用于任何可执行文件,但根据运行该进程的帐户,您可能需要管理权限才能暂停进程或线程。