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

Вниз

Изменение приоритета существующего процеса в NT   Найти похожие ветки 

 
BorisUK   (2002-12-19 14:54) [0]

Господа, не подскажите сабж...
Есть тема , что при достаточно большом количестве терминальных сессий прога начинает подвисать...
Проблема решается если зайдя в Task Manager изменить процессам приоритет на более низкий.
Хотелось бы автоматизизовать данную процедуру
Нельзя ли перехватывать момент создания в системе определенного процеса и изменять ему приоритет...
???


 
Игорь Шевченко   (2002-12-19 15:45) [1]


> Нельзя ли перехватывать момент создания в системе определенного
> процеса и изменять ему приоритет...


Можно, но геморрой того не стоит...


 
BorisUK   (2002-12-19 15:56) [2]

А всеже :)
?


 
Игорь Шевченко   (2002-12-19 17:09) [3]

BorisUK © (19.12.02 15:56)

Поверь, серьезно не стоит. Лучше создавать процессы(потоки) с заранее пониженным приоритетом.


 
BorisUK   (2002-12-20 06:07) [4]

Task Manager позволяет изменить процессам приоритет на более низкий, а также отображает текущий...
Почему нельзя сделать это программно?
Я всеже хочу попробовать! Но я хотел бы узнать КАК это можно сделатть? Есть ли необходимый инструментарий для этого... В частности функция, возвращяющая текущий приоритет и процедура, изменяющая его?


 
BorisUK   (2002-12-20 07:43) [5]

В общем нельзяли пример кода или скажите где взять качественную доку... Прошу потому как раньше ничего такого не писал...
Пока с БД только в основном работал.
Уточнение задачи:
Нужно сканировать список NT процессов (например по таймеру, раз уж отслеживать появление нового геморно),
Затем искать все процессы с определенным именем и менять им приоритет на пониже :)
Например так
SetThreadPriority(ThreadHandle, THREAD_PRIORITY_LOWEST)

Получить список всех процессов?
В цикле по ним ходить и искать "ХХХХ.ЕХЕ"
Как грамотно получать ThreadHandle?
Правильную ли процедуру нашел? - ну хотя это потом и сам проверю :)


 
Внук   (2002-12-20 09:24) [6]

Если не перехватывать момент создания нового процесса, то, наверно, хватит:
1. ToolHelp32 Functions - для нахождения нужного процесса и его потоков. Или, под NT - PSAPI Functions.
2. SetPriorityClass
3. SetThreadPriority (если недостаточно пункта 2.)
Ну и, возможно, привилегии понадобятся для этого дела. AdjustTokenPrivilegies.


 
BorisUK   (2002-12-20 11:56) [7]

<< 1. ToolHelp32 Functions - для нахождения нужного процесса и его потоков. Или, под NT - PSAPI Functions.

Где это взять ?

В общем нельзяли пример кода или скажите где взять качественную доку... ??? Прошу потому как раньше ничего такого не писал...



 
Troll   (2002-12-20 12:03) [8]

извините.


 
Внук   (2002-12-20 13:51) [9]

>>BorisUK © (20.12.02 11:56)
Дык известно где взять - MSDN. Например
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/perfmon/base/psapi_functions.asp

Или поиск по CreateToolhelp32Snapshot и ей подобным. Но последнее под NT не пойдет.


 
BorisUK   (2002-12-20 13:59) [10]

Сами библиотеки то я нашел...
PSAPI: http://www.microsoft.com/downloads/release.asp?releaseid=30337
PDH.DLL: http://www.microsoft.com/downloads/release.asp?releaseid=30336
WMI: http://www.microsoft.com/downloads/release.asp?releaseid=30455

В общем пример дать или кусок документации, где это все объяснено - вам жалко..
Ну ладно. Сам буду пробовать разбираться - просто побыстрее надо... (сразу знаю что напишут - как в анекдоте - типа "Ну так быстрее разбирайся!")...
Можно подумать что вы все сами это с нуля делали - кто тож тоже когдато по примерам учился....


 
Игорь Шевченко   (2002-12-20 14:17) [11]


> Прошу потому как раньше ничего такого не писал...
> Пока с БД только в основном работал.

...

> Можно, но геморрой того не стоит...


Ключевое слово - геморрой того не стоит. Тем более при "раньше ничего такого не писал". Это значит, что кому-то за тебя придется решать твою проблему. Все доки - в MSDN, у Рихтера, и так далее. Примеры по сети, кстати, можно искать самостоятельно - Яндекс, найдется все.

И напоследок: http://ln.com.ua/~openxs/articles/smart-questions-ru.html



 
BorisUK   (2002-12-20 14:52) [12]

Ой извините что спросил... у ВАС таких важных и вальяжных программистов.
Я обсалютно не сомневаюсь что вы знаете и умеете...
Пройдет время и я научусь - не сомливайся.
Но всей этой ветке уже давно место в "Потрепаться" ибо добиться здесь ни от кого ничего не удалось.
Как уже говорилось вам раньше - Разбирусь сам. Просто хотелось убыстрить процесс...

Далее про ссылку
>> И напоследок: http://ln.com.ua/~openxs/articles/smart-questions-ru.html

...
>>Попытайтесь найти ответ с помошью поиска в Web.
Искал и ищу... про яндекс знаю.. пока не нашел, то что бы мне помогло нашел бы - не спрашивал, что еще... Теперь кинешь ссылку о том "как искать на яндексе?" о великий крутой ...

>>Попытайтесь найти ответ в руководстве.
Нету... спрашивал где найти.. Спасибо кое что сказали..

>>Попытайтесь найти ответ в списке часто задаваемых вопросов (ЧаВО).
Тоже искал.. И не только здесь

>>Попытайтесь найти ответ путем проверок или экспериментов.
Да, но вначале нужно чтонибудь на чем их проводить. Вот и просил.

>>Спросите опытного товарища.
Да былин былиб они у каждого, да подва и всегда под рукой... До этого думал что сдесь их и есть - ах ошибся. Здесь ведь только "О Великие"...

>>Если вы - программист, попытайтесь найти ответ, анализируя исходный код.
Вот блин и прошу.
...

А вообще прошу, но не попрошайничаю.. Такчто не хотся - не помогай, а вальяжность свою показывать нефига. Не красиво это!
Тем более
> Можно, но геморрой того не стоит...
Мне это надо!!!! Значит буду делать!!!
Делить задачи на сложные и простые недостойно.

Все.. Чат тут заканчиваем. А то все поболтать любят, но только никому не нужными обрывками фраз.

Все.. все я сказал :)


 
Внук   (2002-12-20 15:07) [13]

Вах, опять ущемили честь и достоинство вопрошающего, вот сволочи...
Да разве ж не ответили тебе? Перечитай еще раз
Внук © (20.12.02 09:24)
Внук © (20.12.02 13:51)
Sapienti sat...


 
BorisUK   (2002-12-20 15:20) [14]

Внук © (20.12.02 15:07)

>>Попытайтесь найти ответ в руководстве.
>>Нету... спрашивал где найти.. Спасибо кое что сказали..

Это я и иел в виду!
Спасибо - пробую разбираться...


 
BorisUK   (2002-12-24 14:23) [15]

Получилось вот так. Может кому интересно будет (не люблю не завершенные ветки).
Нашел пять способов, из них некоторые не работают на NT платформах.
Это вроде работает.

На лучший вариант это не претендует, но вдруг кому да пригодится :)

procedure ShowPrcExecute(Sender: TObject);
var
i : integer;
buff : array [0..255] of Char;
h : HWND;
a : array [0..1000] of HWND;

begin
ListBox.Items.Clear;
h:=GetWindow(Handle, gw_HWndFirst);
i:=0;
while h<>0 do
begin
if ((GetWindow(h, gw_Owner) = 0) and
(GetWindowText(h, buff, sizeof(buff)) <> 0) then
begin
GetWindowText(h, buff, sizeof(buff));
if ListBox.Items.IndexOf(" "+StrPas(buff))<0 then
begin
ListBox.Items.Add(" "+StrPas(buff));
a[i]:=h;
inc(i);
end;
end;
h:=GetWindow(h, gw_hWndNext);
end;
ListBox.ItemIndex:=0;
end;


 
Игорь Шевченко   (2002-12-24 14:41) [16]

В кладовку, в раздел готовые программы сегодня выложена программа QuerySystemInformation, в том числе и получение списка процессов с их потоками.
Только для NT/Win2K/WinXP.
Приоритет, соответственно, меняется функцией SetThreadPriority



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

Форум: "WinAPI";
Текущий архив: 2003.02.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.011 c
4-15994
melifaro
2002-12-20 08:40
2003.02.06
Как открыть окно


1-15563
Arkady
2003-01-28 16:07
2003.02.06
try … except


3-15502
Донской
2003-01-20 19:26
2003.02.06
Как отловить вставку текста из выпадающего списка PickList в поле


14-15887
Думкин
2003-01-18 10:36
2003.02.06
Книги


3-15431
Я
2003-01-22 12:37
2003.02.06
Блокировка таблицы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский