performance - 如何卡住程序的执行?

标签 performance delphi windows-xp

假设我有一个程序会占用处理器和/或硬盘,以至于几乎不可能在该计算机上执行任何其他操作。现在我不想终止该程序,因为它所做的事情很有用(它是一个批处理作业,确实对 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/

相关文章:

c# - SQlBulkCopy 数据源中DateTime类型的给定值无法转换为指定目标列的int类型

Android 白色预览屏幕根据应用程序的启动位置花费不同的时间

c# - 在 WinForms 输入焦点上自动弹出平板电脑触摸键盘

C#:Cursor.Hide() 在 XP 上不起作用

java - ExecutorService 令人惊讶的性能盈亏平衡点——经验法则?

mysql - 优化我的自定义 RAND() 查询

windows - 如何从字体文件中获取字体名称?

.net - Delphi vcl.net应用及反编译

c++ - 如何通知我的应用程序默认的声音播放设备已更改?

windows-vista - Windows 注册表项名称的最大长度是多少?