Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.09.2007, 19:30   #1
P@SH@
 
Регистрация: 03.09.2007
Сообщений: 7
По умолчанию Приоритет процесса

Подскажите, как задать приоритет процесса в Delphi?
P@SH@ вне форума Ответить с цитированием
Старый 26.09.2007, 20:20   #2
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

установка класса приоритета для процесса:
Код:
BOOL SetPriorityClass(
    HANDLE hProcess,	// handle to the process  
    DWORD dwPriorityClass 	// priority class value 
   );
я думаю это элементарно

установка приоритета для потока
Код:
BOOL SetThreadPriority(
    HANDLE hThread,	// handle to the thread 
    int nPriority 	// thread priority level 
   );
ID нужного потока можно получить через перечисление потоков с помощью ToolHelp API
Код:
var ThreadsSnapshot:THandle;
    ThreadRecord:TThreadEntry32;
begin
  ThreadsSnapshot:=CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD,0);
  ThreadRecord.dwSize:=sizeof(ThreadRecord);
  if Thread32First(ThreadsSnapshot,ThreadRecord) then
   begin //n 101
    repeat
     if ThreadRecord.th32OwnerProcessID=OwnerProcessID then 
        begin
          // ThreadRecord.th32ThreadID -  это ID потока в процессе OwnerProcessID
        end;
    until not Thread32Next(ThreadsSnapshot,ThreadRecord);
   end;  //k 101
  CloseHandle(ThreadsSnapshot);
открыть поток можно через недокументиорованную функцию

Код:
Function OpenThread(dwDesiredAccess: dword;
                    bInheritHandle: bool;
                    dwThreadId: dword): dword; stdcall;
                                  external 'kernel32.dll';
один из флагов для открытия потока
Код:
const
  THREAD_ALL_ACCESS      = $001F03FF;
rpy3uH вне форума Ответить с цитированием
Старый 26.09.2007, 21:14   #3
P@SH@
 
Регистрация: 03.09.2007
Сообщений: 7
По умолчанию

приоритет изменяется сразу после выполнения SetPriorityClass? приостанавливать его не нужно?

может ли приложение изменить приоритет своего процесса?

Последний раз редактировалось rpy3uH; 27.09.2007 в 20:15.
P@SH@ вне форума Ответить с цитированием
Старый 27.09.2007, 17:57   #4
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

а почему бы и нет )
пыщь
JTG вне форума Ответить с цитированием
Старый 27.09.2007, 20:16   #5
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
Сообщение от P@SH@ Посмотреть сообщение
приоритет изменяется сразу после выполнения
SetPriorityClass? приостанавливать его не нужно?
останавливать не нужно

Цитата:
Сообщение от P@SH@ Посмотреть сообщение
может ли приложение изменить приоритет своего процесса?
может
rpy3uH вне форума Ответить с цитированием
Старый 27.10.2007, 00:10   #6
Slovinsky
Пользователь
 
Регистрация: 26.10.2007
Сообщений: 79
По умолчанию

Цитата:
Сообщение от rpy3uH Посмотреть сообщение
открыть поток можно через недокументиорованную функцию...
И давно она недокументирована?
http://msdn2.microsoft.com/en-us/library/ms684335.aspx
Slovinsky вне форума Ответить с цитированием
Старый 28.10.2007, 10:24   #7
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
Сообщение от Slovinsky Посмотреть сообщение
И давно она недокументирована?
МОЛОДЕЦ!!!
просто у меня в MS SDK (справка по WinAPI которая устанавливается вместе с Delphi) нет описания этой функции. И этой функции нет в заголовочных файлах к Delphi
rpy3uH вне форума Ответить с цитированием
Старый 13.05.2014, 21:30   #8
zfsjdid
Новичок
Джуниор
 
Регистрация: 13.05.2014
Сообщений: 2
По умолчанию

Подскажите как к этой мини-программки установить приоритет???
#include <iostream>
#include "windows.h"
using namespace std;
int main()
{
cout<<"Avtor: . ";
cout<<"Lab2 SPZ\n";

STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi;
CreateProcess (NULL, "notepad.exe", NULL, NULL, TRUE,
CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi);

system("PAUSE");

return 0;
}
zfsjdid вне форума Ответить с цитированием
Старый 13.05.2014, 21:37   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от zfsjdid Посмотреть сообщение
Подскажите как к этой мини-программки установить приоритет???
#include <iostream>
#include "windows.h"
using namespace std;
int main()
{
cout<<"Avtor: . ";
cout<<"Lab2 SPZ\n";

STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi;
CreateProcess (NULL, "notepad.exe", NULL, NULL, TRUE,
CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi);

system("PAUSE");

return 0;
}
ниже же все написано
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 13.05.2014, 21:48   #10
zfsjdid
Новичок
Джуниор
 
Регистрация: 13.05.2014
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
ниже же все написано
Мне с этой программы нужно установить различные приоритеты для созданного процесса, используя функцию SetPriorityClass. Только не могу понять как правильно прописать,
zfsjdid вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Приоритет Михаил Юрьевич Win Api 5 15.07.2008 23:23
Приоритет чужого процесса (консультация) Air Win Api 9 06.03.2008 20:05
ID процесса ben95 Общие вопросы Delphi 1 22.01.2008 19:43
Управление потоками. Запуск, остановка, приоритет потока. metamfetamin Помощь студентам 5 11.11.2007 12:45
Скрытие процесса komex Безопасность, Шифрование 11 18.12.2006 23:04