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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.09.2010, 00:47   #1
SoftKoc
Форумчанин
 
Аватар для SoftKoc
 
Регистрация: 07.11.2009
Сообщений: 218
Восклицание Приоритет своего приложения

Здравствуйте


Подскажите пожалуйста как можно установить "высокий" приоритет своему приложению.

Заранее очень благодарен!
Я бы изменил мир, но Бог не дает исходников...
Если помог, нажми на весы и поставь плюс - в знак благодарности
SoftKoc вне форума Ответить с цитированием
Старый 13.09.2010, 01:09   #2
glGizma
Пользователь
 
Регистрация: 25.02.2010
Сообщений: 49
По умолчанию

С таким запросами нужно быть аккуратнее, высокий приоритет приложения не столь хорошая идея в том плане, что твоя прога повиснет и потянет за собой сбой системы. Набери в гуглях: Tasks&Processes Killer и ты дословно найдёшь ответ на свой вопрос...
glGizma вне форума Ответить с цитированием
Старый 13.09.2010, 01:11   #3
glGizma
Пользователь
 
Регистрация: 25.02.2010
Сообщений: 49
По умолчанию

Код:
procedure TMainForm.setpriority(id:THandle;prclass:Cardinal);
var hproc:THANDLE;
begin
  hproc:=OpenProcess(PROCESS_ALL_ACCESS,false,id);
  SetPriorityClass(hproc,prclass);
  CloseHandle(hproc);
end;

procedure Tmainform.highClick(Sender: TObject);
begin
  setpriority(strtoint(processlist.Cells[1,processlist.row]),HIGH_PRIORITY_CLASS);
end;
glGizma вне форума Ответить с цитированием
Старый 13.09.2010, 01:12   #4
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

Как-то так:
Код:
SetPriorityClass(Application.Handle, HIGH_PRIORITY_CLASS);
_Engine_ вне форума Ответить с цитированием
Старый 13.09.2010, 01:49   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
SetPriorityClass(GetCurrentProcess,HIGH_PRIORITY_CLASS);
_Engine_, Application это всетаки не процесс
а кнопка на таскбаре(это окно как бы), так что пример, не подходит.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 13.09.2010, 02:02   #6
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
_Engine_, Application это всетаки не процесс
.
Виноват, посыпаю голову пеплом.
_Engine_ вне форума Ответить с цитированием
Старый 13.09.2010, 02:07   #7
glGizma
Пользователь
 
Регистрация: 25.02.2010
Сообщений: 49
По умолчанию

_Engine_,
Код:
разобрался??
glGizma вне форума Ответить с цитированием
Старый 13.09.2010, 13:39   #8
SoftKoc
Форумчанин
 
Аватар для SoftKoc
 
Регистрация: 07.11.2009
Сообщений: 218
По умолчанию

Разобрался, спасибо большое всем за помощь =-)))
И кстати с праздником, сегодня день программиста (13 сентября - День программиста)
Я бы изменил мир, но Бог не дает исходников...
Если помог, нажми на весы и поставь плюс - в знак благодарности
SoftKoc вне форума Ответить с цитированием
Старый 13.09.2010, 13:50   #9
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Цитата:
И кстати с праздником, сегодня день программиста (13 сентября - День программиста)
Да-да, напьемся сегодня))

всех с праздником!
ZuBy вне форума Ответить с цитированием
Старый 13.09.2010, 15:53   #10
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

Код:
type
  TPriorMode = (pmNormal, pmIdle, pmHigh, pmRealtime); // приоритет программы

const
 PriorClass :Array[TPriorMode]of LongInt = (NORMAL_PRIORITY_CLASS, IDLE_PRIORITY_CLASS,
                                            HIGH_PRIORITY_CLASS, REALTIME_PRIORITY_CLASS);
 PriorThread :Array[TPriorMode]of LongInt = (THREAD_PRIORITY_NORMAL, THREAD_PRIORITY_IDLE,
                                             THREAD_PRIORITY_HIGHEST, THREAD_PRIORITY_TIME_CRITICAL);

// .............................................

procedure SetPrior(V: TPriorMode);
var
  ProcessID : DWORD;
  ProcessHandle : THandle;
  ThreadHandle : THandle;
begin // установка приоритета СВОЕЙ программы
  ProcessID := GetCurrentProcessID;
  ProcessHandle := OpenProcess(PROCESS_SET_INFORMATION,
                               False,
                               ProcessID);
  SetPriorityClass(ProcessHandle, PriorClass[V]);
  ThreadHandle := GetCurrentThread;
  SetThreadPriority(ThreadHandle, PriorThread[V]);
end;
использование
Код:
SetPrior(pmHigh);
Alter вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запуск своего приложения при открытии документа nic_100 Помощь студентам 1 15.05.2010 20:23
как запустить из своего приложения чужой exe-шник SarahConner Общие вопросы Delphi 2 13.05.2009 20:36
Запуск программы из своего приложения. sashaslam Общие вопросы Delphi 12 31.01.2009 14:23
Запуск своего приложения одновременно с другим Sauronb|4 Общие вопросы Delphi 1 19.10.2008 18:45
Как сделать Панель задач для MDI окошек своего приложения? Angel86rus Общие вопросы Delphi 1 04.10.2007 15:15