Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2008.08.10;
Скачать: [xml.tar.bz2];

Вниз

Приоритет программ через 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.008 c
15-1213866102
Fin
2008-06-19 13:01
2008.08.10
Программы для модогядерных процессоров


2-1215537728
Wowa1
2008-07-08 21:22
2008.08.10
TTreeNode скопировать


15-1214467249
123-ий
2008-06-26 12:00
2008.08.10
Интернет магазин


15-1214131594
u4b
2008-06-22 14:46
2008.08.10
Свечение текста


15-1213883179
Dmitry S
2008-06-19 17:46
2008.08.10
сила/ускорение/скорость





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский