Вопрос Как получить значение приоритета установки?

Andreo Fadio

Старожил
Пробовал получить так:
Код:
function GetCurrentProcess: THandle; external 'GetCurrentProcess@kernel32';
function GetPriorityClass(hProcess: THandle): BOOL; external 'GetPriorityClass@kernel32';

S: Dword;
S:= GetPriorityClass(GetCurrentProcess);
Выдает ошибку. Что за тип данных возращается так и не допонял. Хотя в инструкции написано возвращается Dword (Ссылка)

Подскажите что не так или как правильно сделать, если это возможно.
 

Хамик

Старожил
а если так
Код:
function GetCurrentProcess: THandle; external 'GetCurrentProcess@kernel32';
function GetPriorityClass(hProcess: THandle): dword; external 'GetPriorityClass@kernel32';

var
s: dword;
begin
s := GetPriorityClass(GetCurrentProcess);
case s of 
    $00000020: msgbox('Normal', mbInformation, mb_ok); 
    $00000040: msgbox('IDLE', mbInformation, mb_ok); 
    $00000080: msgbox('High', mbInformation, mb_ok); 
    $00000100: msgbox('REALTIME', mbInformation, mb_ok); 
end;
end;
 
Последнее редактирование:

Leserg

Участник
На основе этого примера (Установка/Получение приоритета процесса) можно сделать так:
Код:
[Code]

const
  ppIdle = -1;
  ppNormal = 0;
  ppHigh = 1;
  ppRealTime = 2;
  IDLE_PRIORITY_CLASS = $40;
  BELOW_NORMAL_PRIORITY_CLASS = $4000;
  NORMAL_PRIORITY_CLASS = $20;
  ABOVE_NORMAL_PRIORITY_CLASS = $8000;
  HIGH_PRIORITY_CLASS = $80;
  REALTIME_PRIORITY_CLASS = $100;

function GetCurrentProcess: THandle; external 'GetCurrentProcess@kernel32';
function GetPriorityClass(hProcess: THandle): BOOL; external 'GetPriorityClass@kernel32';
function SetPriorityClass(hProcess: THandle; dwPriorityClass: DWORD): BOOL; external 'SetPriorityClass@kernel32';

function SetProcessPriority(Priority: Integer): Integer;
var
  H : THandle;
begin
  Result := ppNormal;
  H := GetCurrentProcess();
  if (Priority = ppIdle) then
    SetPriorityClass(H, IDLE_PRIORITY_CLASS)
  else
  if (Priority = ppNormal) then
    SetPriorityClass(H, NORMAL_PRIORITY_CLASS)
  else
  if (Priority = ppHigh) then
    SetPriorityClass(H, HIGH_PRIORITY_CLASS)
  else
  if ( Priority = ppRealTime ) then
    SetPriorityClass(H, REALTIME_PRIORITY_CLASS);
  case GetPriorityClass(H) of
    IDLE_PRIORITY_CLASS: Result := ppIdle;
    NORMAL_PRIORITY_CLASS: Result := ppNormal;
    HIGH_PRIORITY_CLASS: Result := ppHigh;
    REALTIME_PRIORITY_CLASS: Result := ppRealTime;
  end;
end;

function GetProcessPriority: Integer;
var
  H : THandle;
begin
  Result := ppNormal;
  H := GetCurrentProcess();
  case GetPriorityClass(H) of
    IDLE_PRIORITY_CLASS: Result := ppIdle;
    NORMAL_PRIORITY_CLASS: Result := ppNormal;
    HIGH_PRIORITY_CLASS: Result := ppHigh;
    REALTIME_PRIORITY_CLASS: Result := ppRealTime;
  end;
end;

procedure InitializeWizard();
begin
  { Установка приоритета }
  //SetProcessPriority(1);
  { Сообщение }
  MsgBox('Приоритет установки: ' + IntToStr(GetProcessPriority), mbInformation, MB_OK);
end;
Дальше можно переделать под свои нужды.
 
Сверху