挂起一个过程

时间:2009-07-07 09:38:10

标签: windows winapi

是否有(或多或少)简单的方法来强制Windows应用程序的进程挂起,而不是响应?或者这完全取决于相关的申请/流程?

编辑:我想要尝试的是:有问题的应用程序有一个Web GUI,后台有几个正在运行的进程。有报告称,当其中一个进程崩溃时,Web GUI停止响应。我想尝试重现这一点,但我意识到这可能不那么容易。

6 个答案:

答案 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确认了这两个功能。我发现这对于模拟问题中描述的性质的失败很有用。

这将适用于任何可执行文件,但根据运行该进程的帐户,您可能需要管理权限才能暂停进程或线程。