Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Приоритет [D7, WinXP]


WhiteGuy ©   (2005-01-05 09:46:00) 

Здорово опять!
Чёто я втыкаю.. 8-) - Как изменить приоритет проги?


kaZaNoVa   (2005-01-05 15:39:00) [1]

KSergey ©   (05.01.05 15:33) [10]
всё, не буду :)))
хех =)


kaZaNoVa   (2005-01-05 15:38:00) [2]

да, кстати, по сабжу:
Procedure SetProgramPriority;
Var
 ProcessHandle : THandle;
Begin
ProcessHandle := OpenProcess(PROCESS_SET_INFORMATION, False, GetCurrentProcessID);
    SetPriorityClass(ProcessHandle, REALTIME_PRIORITY_CLASS);
CloseHandle(ProcessHandle);
    SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);
End;

выделенная строка имхо необязательна, но она даёт текущему потоку в итоге приоретет 31 (без неё 24) =)
- я раз, для прикола, вставил потом строчку While (True) do Begin End;- система (2003) "зависла" =))


KSergey   (2005-01-05 15:33:00) [3]

> [9] kaZaNoVa ©   (05.01.05 15:30)
> //я люблю готовый код выкладывать ...

Вот оно, счастье всем даром!! Наконец то!! УРА!


kaZaNoVa   (2005-01-05 15:30:00) [4]

TUser ©   (05.01.05 11:50) [5]

> См. в WinSDK.

а я в Windows.pasв таких случаях обычно заглядываю :))) (там классно константы описаны:))

//я люблю готовый код выкладывать ...    а справку редко читаю:)


kaZaNoVa   (2005-01-05 15:25:00) [5]

WhiteGuy   (05.01.05 10:24) [3]
Procedure SetProgramPriority;
Var
ProcessHandle     : THandle;
ThreadHandle      : THandle;
Begin
 ProcessHandle := OpenProcess(PROCESS_SET_INFORMATION, False, GetCurrentProcessID);
    SetPriorityClass(ProcessHandle, REALTIME_PRIORITY_CLASS);
 ThreadHandle := GetCurrentThread;
    SetThreadPriority(ThreadHandle, THREAD_PRIORITY_TIME_CRITICAL);
 CloseHandle(ProcessHandle);
End;


TUser   (2005-01-05 15:16:00) [6]

А действительно - прочитал SetThreadPriority и не заметил ...


kaZaNoVa   (2005-01-05 14:17:00) [7]

TUser ©   (05.01.05 11:50) [4]
не совсем понял, что имеется ввиду ..

> SetPriorityClass

у меня есть :)))))))


TUser   (2005-01-05 11:50:00) [8]


> kaZaNoVa ©   (05.01.05 09:51) [2]

Это для текущего потока. Для всего процесса - SetPriorityClass


TUser   (2005-01-05 11:50:00) [9]


> WhiteGuy   (05.01.05 10:24) [3]

См. в WinSDK. А еще есть Тексейра - там очень подробно про это написано.


WhiteGuy   (2005-01-05 10:24:00) [10]

2 kaZaNoVa
А чтобы поставить макс., нужно поменять LOWEST на HIGHEST?


kaZaNoVa   (2005-01-05 09:51:00) [11]

WhiteGuy   (05.01.05 9:46)
// Установка LOW приоритета у всего приложения

Procedure SetProgramPriority;
Var
ProcessID         : DWORD;
ProcessHandle     : THandle;
ThreadHandle      : THandle;
Begin
ProcessID := GetCurrentProcessID;
ProcessHandle := OpenProcess(PROCESS_SET_INFORMATION, False, ProcessID);
SetPriorityClass(ProcessHandle, IDLE_PRIORITY_CLASS);
ThreadHandle := GetCurrentThread;
SetThreadPriority(ThreadHandle, THREAD_PRIORITY_LOWEST);
CloseHandle(ProcessHandle);
End;


Rocket   (2005-01-05 09:49:00) [12]

В taskmanager'е вкладка "Процессы". Правой кнопкой на нужном, "Приоритет"... :)


Наверх

Титульная страница Поиск, карта сайта Написать письмо