В качестве параметров необходимо передать _имя процесса_ (то, которое в диспетчере задач) и приоритет.
Не забудьте также подключить модуль TLHelp32.
procedure SetPriority(Name: String; Priority: Integer);
var
Handler: THandle;
Data: TProcessEntry32;
Finded: boolean;
Res: boolean;
ProcessID : DWORD;
ProcessHandle : THandle;
ThreadHandle : THandle;
function ReturnName: String;
var
I : byte;
Names: string;
begin
names:='';
i:=0;
while data.szExeFile[i] <> '' do
begin
names:=names+data.szExeFile[i];
inc(i);
end;
ReturnName:=names;
end;
procedure TryIt;
begin
if AnsiUpperCase(ReturnName)=AnsiUpperCase(Name) then
begin
ProcessHandle := OpenProcess(PROCESS_SET_INFORMATION, true, data.th32ProcessID);
Finded:=true;
if ProcessHandle=0 then
begin
RaiseLastWin32Error;
exit;
end;
case Priority of
0: Res:=true;
1: Res:=SetPriorityClass(ProcessHandle, IDLE_PRIORITY_CLASS);
2: Res:=SetPriorityClass(ProcessHandle, NORMAL_PRIORITY_CLASS);
3: Res:=SetPriorityClass(ProcessHandle, HIGH_PRIORITY_CLASS);
4: Res:=SetPriorityClass(ProcessHandle, REALTIME_PRIORITY_CLASS);
end;
if not Res then
RaiseLastWin32Error;
end;
end;
begin
Finded:=false;
Handler:= CreateToolHelp32SnapShot(TH32CS_SNAPALL,0);
if process32first(handler,data) then
begin
TryIt;
while process32next(handler,data) do
TryIt
end;
if not Finded then
ShowMessage('Cannot find');
end;
Источник: www.delphikingdom.ru
|