Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

Купить рекламу на форуме 15-35 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.03.2008, 18:18   #1
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,305
По умолчанию Приоритет чужого процесса (консультация)

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

На форуме откопал
Код:
BOOL SetPriorityClass(  
     HANDLE hProcess,    // handle to the process    
     DWORD dwPriorityClass   // priority class value   
    );
А вот 1 параметр (HANDLE hProcess), это ProcessID? т.е. можно просто указать ИД другого процесса?

Заранее благодарен.
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Старый 06.03.2008, 18:24   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Да, можно. А что тут такого? Хэндл должен быть открыт с правами PROCESS_SET_INFORMATION, иначе Вас вежливо попросят.
B_N вне форума Ответить с цитированием
Старый 06.03.2008, 18:38   #3
student_63
Пользователь
 
Аватар для student_63
 
Регистрация: 07.11.2007
Сообщений: 92
По умолчанию

У меня сейчас как раз идет курс системного программирования, так тогда зачем получать описатель при завершении процесса (отрывок из моей лабы):
Код:
  //ЗАВЕРШЕНИЕ ПРОЦЕССА
  //Получаем индекс выделенного процесса
  wProcNum := ListBox1.ItemIndex;
  //Получаем идентификатор по номеру из ранее
  //сохраненного массива
  wProcId := MasIDProc[wProcNum];
  //Получаем описатель по индексу процесса wProcID
  HandleProc := OpenProcess(Process_Terminate, false, wProcID);
  if HandleProc <> 0 then
    TerminateProcess(HandleProc, ExitCode)
Так значит HandleProc := OpenProcess(Process_Terminate, false, wProcID); - бессмысленно????
Я уверен, вы согласитесь со мной... что если
со страницей 534 мы встречаемся во второй главе, то первая глава должна быть невыносимо длинной.
- ШЕРЛОК ХОЛМС
student_63 вне форума Ответить с цитированием
Старый 06.03.2008, 18:51   #4
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Не понял вопроса. Хэндл и идентификатор процесса - разные вещи.
Код:
	DWORD dwProcessId = XXXXXXXX; // Идентификатор процесса.
	HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcessId);
	if(hProcess){
		SetPriorityClass(hProcess, IDLE_PRIORITY_CLASS);
		CloseHandle(hProcess);
	}
B_N вне форума Ответить с цитированием
Старый 06.03.2008, 19:53   #5
student_63
Пользователь
 
Аватар для student_63
 
Регистрация: 07.11.2007
Сообщений: 92
По умолчанию

Может я что то не понял, т.е., например:
Код:
SetPriorityClass(ProcessHandle, IDLE_PRIORITY_CLASS);
Ведь переменную-описатель ProcessHandle нужно получить:
Код:
ProcessHandle:= OpenProcess(PROCESS_SET_INFORMATION, FALSE, IDProcInf.dwProcessId);
А ты говоришь что вместо нее можно написать идентификатор процесса, ну т.е. переменную типа dWord, или я не так понял?
Я уверен, вы согласитесь со мной... что если
со страницей 534 мы встречаемся во второй главе, то первая глава должна быть невыносимо длинной.
- ШЕРЛОК ХОЛМС
student_63 вне форума Ответить с цитированием
Старый 06.03.2008, 19:56   #6
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,305
По умолчанию

B_N - спасибо за консультацию.

а вот как это делается.
Код:
SetPriorityClass(openprocess(PROCESS_SET_INFORMATION,false,7228),HIGH_PRIORITY_CLASS);
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Старый 06.03.2008, 19:57   #7
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от student_63 Посмотреть сообщение
А ты говоришь что вместо нее можно написать идентификатор процесса, ну т.е. переменную типа dWord, или я не так понял?
Я так не говорю. Я говорю: "Хэндл и идентификатор процесса - разные вещи."
--------------------------
Цитата:
Сообщение от Air Посмотреть сообщение
Код:
SetPriorityClass(openprocess(PROCESS_SET_INFORMATION,false,7228),HIGH_PRIORITY_CLASS);
Спасибо, конечно , но только открытые хэндлы полагается потом закрывать...

Последний раз редактировалось B_N; 06.03.2008 в 20:01.
B_N вне форума Ответить с цитированием
Старый 06.03.2008, 20:02   #8
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,305
По умолчанию

Цитата:
Спасибо, конечно , но только открытые хэндлы полагается потом закрывать...
э-ээ.., закрывать, а как не подскажете?
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Старый 06.03.2008, 20:04   #9
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Air Посмотреть сообщение
э-ээ.., закрывать, а как не подскажете?
Air, ну я же выше прямо готовый код привел... Через CloseHandle в данном случае.
B_N вне форума Ответить с цитированием
Старый 06.03.2008, 20:05   #10
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,305
По умолчанию

Прошу прошения, не заметил.
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Приоритет процесса P@SH@ Win Api 9 13.05.2014 20:48
закрытие чужого процесса Dimon Win Api 7 12.05.2010 11:01
Приоритет Михаил Юрьевич Win Api 5 15.07.2008 22:23
Ждать завершения чужого процесса ERASERROR Win Api 2 04.02.2008 08:23
Пшу диплом, нужна консультация небольшая.. staspro Помощь студентам 5 07.08.2007 22:36

Реклама для незарегистрированных, регистрация на форуме