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

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

Приоритет программ через CreateProcess [D7]


Страницы:   1 2

Elec3C ©   (2007-11-28 15:36:00) 

Запускаю программы через CreateProcess. Есть возможность устанавливать приоритет запускаемых программ 'выше среднего' и 'ниже среднего'?

P.S. В модуле 'Windows.pas' есть только:
    IDLE_PRIORITY_CLASS      = низкий
    NORMAL_PRIORITY_CLASS    = средний      
 
    HIGH_PRIORITY_CLASS      = высокий      
    REALTIME_PRIORITY_CLASS  = реального времени


Elec3C   (2007-11-29 23:29:00) [1]

Лекарство http://msdn2.microsoft.com/en-us/library/ms686219.aspxпомогло!!!
Ветку можно закрыть.


Elec3C   (2007-11-29 23:21:00) [2]

Не совсем понял?!
P.S. GetPriorityClass???


Leonid Troyanovsky   (2007-11-29 22:49:00) [3]


> Elec3C ©   (29.11.07 22:08) [18]

> Дисп. задач (Там же устанавливается приоритет 'Ниже среднего'

Дык, он показывает базовый приоритет процесса,
а менять ты пытаешься потоку.

RTFM, со слова Get.
И не надо забывать анализ GetLastError.

--
Regards, LVT.


Elec3C   (2007-11-29 22:08:00) [4]


> А чем ты меряешь "Ниже среднего"?

Дисп. задач (Там же устанавливается приоритет 'Ниже среднего' и  'Выше среднего').


Leonid Troyanovsky   (2007-11-29 20:25:00) [5]


> Elec3C ©   (28.11.07 15:36)  

> P.S. В модуле 'Windows.pas' есть только:

http://msdn2.microsoft.com/en-us/library/ms686219.aspx

--
Regards, LVT.


Leonid Troyanovsky   (2007-11-29 20:23:00) [6]


> Elec3C ©   (29.11.07 17:12) [14]

> Так в чём ошибка?

А чем ты меряешь "Ниже среднего"?

--
Regards, LVT.


Юрий Зотов   (2007-11-29 17:22:00) [7]

Права на hProcess и hThread позволяют менять приоритет?


Elec3C   (2007-11-29 17:12:00) [8]

Так в чём ошибка?


Джо   (2007-11-29 15:40:00) [9]

> [12] Германн ©   (29.11.07 15:32)
>
> > Если это реальный код, то повторю вопрос [4]. Я нудный.
>
>
> > with SI, PI do
> >   begin

А, мало того, что я нудный, так я еще и слепой :)


Германн   (2007-11-29 15:32:00) [10]


> Если это реальный код, то повторю вопрос [4]. Я нудный.


> with SI, PIdo
>   begin


Джо   (2007-11-29 15:20:00) [11]

> [9] Elec3C ©   (28.11.07 17:56)
> CreateProcess(nil, 'C:\Windows\notepad.exe', nil, nil, False,
> NORMAL_PRIORITY_CLASS, nil, nil, SI, PI);
> SetThreadPriority(hThread, THREAD_PRIORITY_BELOW_NORMAL)
> ;
>
> Не работает

Если это реальный код, то повторю вопрос [4]. Я нудный.


Elec3C   (2007-11-29 15:04:00) [12]

^


Elec3C   (2007-11-28 17:56:00) [13]

CreateProcess(nil, 'C:\Windows\notepad.exe', nil, nil, False, NORMAL_PRIORITY_CLASS, nil, nil, SI, PI);
SetThreadPriority(hThread, THREAD_PRIORITY_BELOW_NORMAL);

Не работает(Или работает но не так, как нужно)! Как был средний приоритет нотепада, так и остался (Хотя должен был измениться на 'Ниже среднего').


clickmaker   (2007-11-28 17:05:00) [14]


> [7] Elec3C ©   (28.11.07 16:53)

NORMAL_PRIORITY_CLASS  для процесса
THREAD_PRIORITY_BELOW_NORMAL для основного потока


Elec3C   (2007-11-28 16:53:00) [15]


> clickmaker ©

Так каким образом реализовать [0].


Elec3C   (2007-11-28 16:32:00) [16]


> Джо ©

ХМ!? В CreateProcess в PI. Или нет?
P.S. А как правильно сделать?


clickmaker   (2007-11-28 16:23:00) [17]


>  [3] Elec3C ©   (28.11.07 16:12)

дело в том, что процесс задает как бы класс приоритета, а фактический приоритет задачи определяется как класс приоритета процесса +- приоритет потока. Т.е. реальный приоритет отсчитывается относительнопроцесса


Джо   (2007-11-28 16:18:00) [18]

>    CreateProcess(nil, 'C:\Windows\notepad.exe', nil, nil,
> False, 0, nil, nil, SI, PI);
>
>    SetThreadPriority(hThread, THREAD_PRIORITY_BELOW_NORMAL)
> ; // Вроде бы ниже среднего

Все прекрасно, но где в переменную hThread записывается дескриптор нити?


Elec3C   (2007-11-28 16:12:00) [19]


> clickmaker ©

Значит, я пишу так:

var
 SI : _STARTUPINFOA;
 PI : _PROCESS_INFORMATION;
begin
 ZeroMemory(@SI, SizeOf(_STARTUPINFOA));
 ZeroMemory(@PI, SizeOf(_PROCESS_INFORMATION));

 with SI, PI do
  begin
    cb          := SizeOf(_STARTUPINFOA);
    dwFlags     := STARTF_USESHOWWINDOW;
    wShowWindow := SW_SHOWNORMAL;

    CreateProcess(nil, 'C:\Windows\notepad.exe', nil, nil, False, 0, nil, nil, SI, PI);

    SetThreadPriority(hThread, THREAD_PRIORITY_BELOW_NORMAL); // Вроде бы ниже среднего

    CloseHandle(hProcess);  CloseHandle(hThread);   CloseHandle(hStdError);
    CloseHandle(hStdInput); CloseHandle(hStdOutPut);
  end;

В результате, как был средний приоритет, так и остался. Что я делаю не так?


Сергей М.   (2007-11-28 15:39:00) [20]


> Elec3C ©   (28.11.07 15:36)


'ниже среднего' = низкий

'выше среднего' = высокий

Этого недостаточно ?


Страницы:   1 2

Наверх

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