Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.07.2008, 21:46   #1
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 655
По умолчанию Приоритет

Подскажите как в своей программе повысить приоритет
За частые поиски был забанен во всех известных
поисковых системах!
Михаил Юрьевич вне форума Ответить с цитированием
Старый 15.07.2008, 21:50   #2
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Код:
SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS );
Repeat
Until false;
^_^
пыщь
JTG вне форума Ответить с цитированием
Старый 15.07.2008, 21:56   #3
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

Упростил до функций. (для всего сразу)

Код:
Type
TPROCESSENTRY32 = packed record
  dwSize: DWORD;
  cntUsage: DWORD;
  th32ProcessID: DWORD;
  th32DefaultHeapID: DWORD;
  th32ModuleID: DWORD;
  cntThreads: DWORD;
  th32ParentProcessID: DWORD;
  pcPriClassBase: Longint;
  dwFlags: DWORD;
  szExeFile: array[0..MAX_PATH - 1] of Char;
  end;

const
  TH32CS_SNAPPROCESS     = $00000002;

var
  Function CreateToolhelp32Snapshot(dwFlags, th32ProcessID: DWORD): dword stdcall;
                                  external 'kernel32.dll';
  Function Process32First(hSnapshot: THandle; var lppe: TProcessEntry32): BOOL stdcall;
                                  external 'kernel32.dll';
  Function Process32Next(hSnapshot: THandle; var lppe: TProcessEntry32): BOOL stdcall;
                                  external 'kernel32.dll';


function GetProcessId(pName: PChar): dword;
var
 Snap: dword;
 Process: TPROCESSENTRY32;
begin
  Result := 0;
  Snap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  if Snap <> INVALID_HANDLE_VALUE then
     begin
      Process.dwSize := SizeOf(TPROCESSENTRY32);
      if Process32First(Snap, Process) then
         repeat
          if lstrcmpi(Process.szExeFile, pName) = 0 then
             begin
              Result := Process.th32ProcessID;
              CloseHandle(Snap);
              Exit;
             end;
         until not Process32Next(Snap, Process);
      Result := 0;
      CloseHandle(Snap);
     end;
end;


function SetPriority(ExeName:string; PRIORITY_CLASS:Cardinal):boolean;
var q:Cardinal;
begin
q:=openprocess(PROCESS_SET_INFORMATION,false,getprocessId(pchar(ExeName)));
result:=SetPriorityClass(q,PRIORITY_CLASS);
CloseHandle(q);
end;

function GetPriority(ExeName:string):Cardinal;
var q:Cardinal;
begin
q:=openprocess(PROCESS_QUERY_INFORMATION,false,getprocessId(pchar(ExeName)));
result:=GetPriorityClass(q);
CloseHandle(q);
end;
И константы
Код:
P_IDLE = IDLE_PRIORITY_CLASS; // низкий
P_IDLE_NORMAL = 16384; // ниже среднего
P_NORMAL = NORMAL_PRIORITY_CLASS; // средний
P_NORMAL_HIGH = 32768; // выше среднего
P_HIGH = HIGH_PRIORITY_CLASS;// высокий
P_REALTIME = REALTIME_PRIORITY_CLASS; // реального времени
Можно по ID вместо GetProcessId
Узнать ID своего процесса GetCurrentProcessID
Всё гениальное - просто!

Последний раз редактировалось Air; 15.07.2008 в 22:09.
Air вне форума Ответить с цитированием
Старый 15.07.2008, 22:00   #4
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject); 
var 
  ProcessID: DWORD; 
  ProcessHandle: THandle; 
  ThreadHandle: THandle; 
begin 
  ProcessID := GetCurrentProcessID; 
  ProcessHandle := OpenProcess(PROCESS_SET_INFORMATION, 
    false, ProcessID); 
  SetPriorityClass(ProcessHandle, REALTIME_PRIORITY_CLASS); 
  ThreadHandle := GetCurrentThread; 
  SetThreadPriority(ThreadHandle, THREAD_PRIORITY_TIME_CRITICAL); 
end;
из MSDN
Цитата:
THREAD_PRIORITY_ABOVE_NORMAL : 1 Priority 1 point above the priority class.
THREAD_PRIORITY_BELOW_NORMAL : -1 Priority 1 point below the priority class.
THREAD_PRIORITY_HIGHEST : 2 Priority 2 points above the priority class.
THREAD_PRIORITY_IDLE :-15 Base priority of 1 for IDLE_PRIORITY_CLASS, BELOW_NORMAL_PRIORITY_CLASS, NORMAL_PRIORITY_CLASS, ABOVE_NORMAL_PRIORITY_CLASS, or HIGH_PRIORITY_CLASS processes, and a base priority of 16 for REALTIME_PRIORITY_CLASS processes.
THREAD_PRIORITY_LOWEST : -2 Priority 2 points below the priority class.
THREAD_PRIORITY_NORMAL : 0 Normal priority for the priority class.
THREAD_PRIORITY_TIME_CRITICAL : 15 Base priority of 15 for IDLE_PRIORITY_CLASS, BELOW_NORMAL_PRIORITY_CLASS, NORMAL_PRIORITY_CLASS, ABOVE_NORMAL_PRIORITY_CLASS, or HIGH_PRIORITY_CLASS processes, and a base priority of 31 for REALTIME_PRIORITY_CLASS processes.
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 15.07.2008, 23:01   #5
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 655
По умолчанию

Цитата:
Сообщение от Greblin Посмотреть сообщение
Код:
procedure TForm1.Button1Click(Sender: TObject); 
var 
  ProcessID: DWORD; 
  ProcessHandle: THandle; 
  ThreadHandle: THandle; 
begin 
  ProcessID := GetCurrentProcessID; 
  ProcessHandle := OpenProcess(PROCESS_SET_INFORMATION, 
    false, ProcessID); 
  SetPriorityClass(ProcessHandle, REALTIME_PRIORITY_CLASS); 
  ThreadHandle := GetCurrentThread; 
  SetThreadPriority(ThreadHandle, THREAD_PRIORITY_TIME_CRITICAL); 
end;
из MSDN
Подскажите а этот код работает в Vista?
За частые поиски был забанен во всех известных
поисковых системах!
Михаил Юрьевич вне форума Ответить с цитированием
Старый 15.07.2008, 23:23   #6
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

Наверно, если там есть такие функции
Код:
function SetPriorityClass; external kernel32 name 'SetPriorityClass';
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Приоритет процесса P@SH@ Win Api 9 13.05.2014 21:48
Приоритет чужого процесса (консультация) Air Win Api 9 06.03.2008 20:05
Управление потоками. Запуск, остановка, приоритет потока. metamfetamin Помощь студентам 5 11.11.2007 12:45