Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.08.10;
Скачать: CL | DM;

Вниз

Приоритет программ через CreateProcess   Найти похожие ветки 

 
Elec3C ©   (2007-11-28 15:36) [0]

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

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


 
clickmaker ©   (2007-11-28 15:38) [1]

см. SetThreadPriority


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


> Elec3C ©   (28.11.07 15:36)


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

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

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


 
Elec3C ©   (2007-11-28 16:12) [3]


> 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 16:18) [4]

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

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


 
clickmaker ©   (2007-11-28 16:23) [5]


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

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


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


> Джо ©

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


 
Elec3C ©   (2007-11-28 16:53) [7]


> clickmaker ©

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


 
clickmaker ©   (2007-11-28 17:05) [8]


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

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


 
Elec3C ©   (2007-11-28 17:56) [9]

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

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


 
Elec3C ©   (2007-11-29 15:04) [10]

^


 
Джо ©   (2007-11-29 15:20) [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]. Я нудный.


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


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


> with SI, PI do
>   begin


 
Джо ©   (2007-11-29 15:40) [13]

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

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


 
Elec3C ©   (2007-11-29 17:12) [14]

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


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

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


 
Leonid Troyanovsky ©   (2007-11-29 20:23) [16]


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

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

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

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2007-11-29 20:25) [17]


> Elec3C ©   (28.11.07 15:36)  

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

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

--
Regards, LVT.


 
Elec3C ©   (2007-11-29 22:08) [18]


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

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


 
Leonid Troyanovsky ©   (2007-11-29 22:49) [19]


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

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

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

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

--
Regards, LVT.


 
Elec3C ©   (2007-11-29 23:21) [20]

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2008.08.10;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.019 c
15-1214065908
TMichael
2008-06-21 20:31
2008.08.10
Linux c++


2-1215592078
Zhentos
2008-07-09 12:27
2008.08.10
Как вырезать фрагмент изображения при изменённом масштабе?


11-1192628677
Jon
2007-10-17 17:44
2008.08.10
Problem with LoadLibrary


2-1215156404
laao
2008-07-04 11:26
2008.08.10
объясните поведение Delphi при выполнении следующего кода


15-1213898858
Knight
2008-06-19 22:07
2008.08.10
Железячники, что можно установить на MB Asus A7V600-X ?