假设我有一个程序会占用处理器和/或硬盘,以至于几乎不可能在该计算机上执行任何其他操作。现在我不想终止该程序,因为它所做的事情很有用(它是一个批处理作业,确实对 CPU 或磁盘很重,例如它可以压缩几 GB 的数据文件),但在短时间内我需要做该计算机上还有其他东西。外部程序有什么办法可以暂时卡住这个性能 killer 吗?
这就像旧的 DOS 选项一样,可以在程序之间切换,而无需实际进行多任务处理。
假设所讨论的假设程序是第三方产品,我没有其源代码,也无法让它暂停。
我知道我可以更改程序的优先级,例如在任务管理器中但这还不够,我想卡住它。
我正在谈论 Windows XP 作为操作系统,并且想使用 Delphi 编写一个解决方案。我拥有计算机的所有权限,因此我可以以管理员身份启动某些内容、替换文件,如果需要,我还可以安装服务。
最佳答案
您可以使用 Process Explorer 卡住它:右键单击您的程序并选择暂停
。
以下是来自 http://www.c-plusplus.de/forum/viewtopic-var-p-is-1460293.html 的程序化卡住的一些示例代码,为简洁起见,编辑并省略了错误检查:
#include <windows.h>
_NtSuspendProcess NtSuspendProcess =
(_NtSuspendProcess) GetProcAddress( GetModuleHandle( "ntdll" ),
"NtSuspendProcess" );
HANDLE ProcessHandle = OpenProcess( PROCESS_ALL_ACCESS, FALSE, pid);
NtSuspendProcess( ProcessHandle );
关于performance - 如何卡住程序的执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4062665/