【发布时间】:2012-01-30 16:46:35
【问题描述】:
如何从我的程序中创建和运行能够设置进程优先级的进程?
这是我目前所拥有的:
const
LOW_PRIORITY = IDLE_PRIORITY_CLASS;
//BELOW_NORMAL_PRIORITY = ???
NORMAL_PRIORITY = NORMAL_PRIORITY_CLASS;
//ABOVE_NORMAL_PRIROTY = ???
HIGH_PRIORITY = HIGH_PRIORITY_CLASS;
REALTIME_PRIORITY = REALTIME_PRIORITY_CLASS;
procedure RunProcess(FileName: string; Priority: Integer);
var
StartInfo: TStartupInfo;
ProcInfo: TProcessInformation;
Done: Boolean;
begin
FillChar(StartInfo,SizeOf(TStartupInfo),#0);
FillChar(ProcInfo,SizeOf(TProcessInformation),#0);
StartInfo.cb := SizeOf(TStartupInfo);
try
Done := CreateProcess(nil, PChar(FileName), nil, nil,False,
CREATE_NEW_PROCESS_GROUP + Priority,
nil, nil, StartInfo, ProcInfo);
if not Done then
MessageDlg('Could not run ' + FileName, mtError, [mbOk], 0);
finally
CloseHandle(ProcInfo.hProcess);
CloseHandle(ProcInfo.hThread);
end;
end;
上面的代码可以设置执行进程的优先级。但请看下面的 Windows 任务管理器图片:
您可以设置更多选项,例如低于正常值和高于正常值,这也是我希望能够设置的。浏览 Windows.pas 我看不到这样的价值。
如何使用这些额外参数创建和运行我的流程?
谢谢:)
【问题讨论】:
-
没关系,我找到了答案。典型的,我尝试了很长时间才找到答案,一问我就找到了解决方案!将编辑我的问题以反映更改。
-
我还是无法编辑。我在您的答案中添加了一条评论,它显示了我找到答案的链接。