Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменение приоритета программы 
V
    Опции темы
leporel
Дата 23.2.2008, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 12.2.2008

Репутация: -1
Всего: -1



Как изменить приоритет программы? можно ли это сделать через WinExec?
PM MAIL   Вверх
jonie
Дата 23.2.2008, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



используй CreateProcess если собираешься создавать новый процесс, там есть соот. поле, отвечающее за приоритет (см msdn)


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
leporel
Дата 23.2.2008, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 12.2.2008

Репутация: -1
Всего: -1



jonie, 
а как тогда программу запускать с определённыйми параметрами?
где тут можно вставить -console -port 20060 ? нужно чтобы было HIGH_PRIORITY_CLASS
 smile 

PM MAIL   Вверх
jonie
Дата 23.2.2008, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



читай msdn про функцию CreateProcess


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
popapo
Дата 23.2.2008, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 23.2.2008

Репутация: 1
Всего: 1



у меня такая же проблема, не получается, вот нашёл http://www.pisoft.ru/verstak/createprocess.htm, но у меня всё равно не получается написать

Код

CreateProcess( "./create.exe","параметры",0,0,0,HIGH_PRIORITY_CLASS,0,NULL,NULL,NULL);


при нажатии на кнопку выдаёт
http://ipicture.ru/uploads/080223/7t2AV7469r.jpg

Это сообщение отредактировал(а) popapo - 23.2.2008, 22:51
PM   Вверх
jonie
Дата 24.2.2008, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



а если читать внимательно..то.. можно найти почему это выдается :
Цитата

lpStartupInfo 
[in] Pointer to a STARTUPINFO structure that specifies the window station, desktop, standard handles, and appearance of the main window for the new process. 
lpProcessInformation 
[out] Pointer to a PROCESS_INFORMATION structure that receives identification information about the new process. 
Handles in PROCESS_INFORMATION must be closed with CloseHandle when they are no longer needed.
с чего бы они могут быть NULL-ы ?


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
popapo
Дата 24.2.2008, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 23.2.2008

Репутация: 1
Всего: 1



jonie, а что там должно быть?
PM   Вверх
jonie
Дата 24.2.2008, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



а там че не написано ?! smile 


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
popapo
Дата 24.2.2008, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 23.2.2008

Репутация: 1
Всего: 1



jonie, а написать мне нельзя? 
Код

CreateProcess("./create.exe параметры",NULL,NULL, NULL, NULL,HIGH_PRIORITY_CLASS,NULL, NULL,STARTUPINFO, PROCESS_INFORMATION);

что надо писать?  smile  

Это сообщение отредактировал(а) popapo - 24.2.2008, 18:51
PM   Вверх
anwe
Дата 24.2.2008, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: нет
Всего: 23



Цитата(leporel @  23.2.2008,  14:40 Найти цитируемый пост)
Как изменить приоритет программы?

SetThreadPriority для главного потока.
PM MAIL   Вверх
popapo
Дата 24.2.2008, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 23.2.2008

Репутация: 1
Всего: 1



anwe, 

так
Код

SetThreadPriority("server.exe",HIGH_PRIORITY_CLASS);

или так
Код

SetThreadPriority("server.exe",THREAD_PRIORITY_HIGHEST);


не работает,  всё равно "средний" приоритет.

Это сообщение отредактировал(а) popapo - 24.2.2008, 23:12
PM   Вверх
jonie
Дата 24.2.2008, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



popapo можно буквы.. можно смайликов наляпать.... я даже скопировал кусок MSDN-а... если что - читай мою подпись. Может стоит перед тем как писать вирусы, почитать про язык С\С++ вообще ?!
anwe судя по вопросу имелось в виду для запускаемой "не своей" программы.

Это сообщение отредактировал(а) jonie - 24.2.2008, 22:57


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
popapo
Дата 24.2.2008, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 23.2.2008

Репутация: 1
Всего: 1



jonie, При чём тут вирусы? да, программу надо не свою, с низким или высоким приоритетом запускать. Сверхцивилизацию я не смогу увидеть, т.к не пью.
PM   Вверх
jonie
Дата 24.2.2008, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



 smile ну тогда остается только читать умные книжки по С\С++ ...


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
anwe
Дата 24.2.2008, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: нет
Всего: 23



popapo, я писал про поток. Что-то мне посказывает, что выполнение SetThreadPriority у Вас проходит с ошибкой. Это "что-то" - два аспекта: 1) для изменения приоритета потока надо сначало его открыть с правом доступа THREAD_SET_INFORMATION; 2) судя по записи
Цитата(popapo @  24.2.2008,  21:54 Найти цитируемый пост)
SetThreadPriority("server.exe",THREAD_PRIORITY_HIGHEST);
 ошибка просто ДОЛЖНА быть, так как я дал функцию изменения проритета ПОТОКА, а Вы пишите название ПРОЦЕССА вместо ХЭНДЛА ПОТОКА!
jonie, разницы нет.
PM MAIL   Вверх
popapo
Дата 25.2.2008, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 23.2.2008

Репутация: 1
Всего: 1



Код

   STARTUPINFO startupInfo = {0};
   startupInfo.cb = sizeof(startupInfo);
   PROCESS_INFORMATION processInformation;
   CreateProcess(NULL,(AnsiString (filee+ " -console +port 250004")).c_str(), NULL, NULL, FALSE, HIGH_PRIORITY_CLASS, NULL, NULL, &startupInfo, &processInformation);  


так правильно будет?
PM   Вверх
popapo
Дата 25.2.2008, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 23.2.2008

Репутация: 1
Всего: 1



Сюда же, чтобы темы не плодить.
У меня написанно
Код

String prioritet;
if(RadioGroup7->ItemIndex == 0)
prioritet = "HIGH_PRIORITY_CLASS";
if(RadioGroup7->ItemIndex == 1)
prioritet = "NORMAL_PRIORITY_CLASS";
if(RadioGroup7->ItemIndex == 2)
prioritet = "IDLE_PRIORITY_CLASS";

и должно подставляться сюда
Код

  CreateProcess(NULL,(AnsiString (filee+ " -console")).c_str(), NULL, NULL, FALSE, prioritet, NULL, NULL, &startupInfo, &processInformation); 

при компиляции выдаёт ошибку 
Код

[C++ Error] Unit1.cpp(310): E2034 Cannot convert 'AnsiString' to 'unsigned long'


Это сообщение отредактировал(а) popapo - 25.2.2008, 11:12
PM   Вверх
petlyura
Дата 25.2.2008, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 30.1.2008
Где: Харьков

Репутация: 2
Всего: 2



HIGH_PRIORITY_CLASS - это число!!!!
Правильно так:

unsigned long prioritet;
if(RadioGroup7->ItemIndex == 0)
prioritet = HIGH_PRIORITY_CLASS;
if(RadioGroup7->ItemIndex == 1)
prioritet = NORMAL_PRIORITY_CLASS;
if(RadioGroup7->ItemIndex == 2)
prioritet = IDLE_PRIORITY_CLASS;

И попробуй каждый раз не паниковать и писать на форум, а чуток подумать, почитать справку. 
В сообщении же написано:
Cannot convert 'AnsiString' to 'unsigned long'
PM MAIL   Вверх
anwe
Дата 25.2.2008, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: нет
Всего: 23



Вот код на Делфи для примера по повышению пиоритета блокнота. Понять суть можно:
Код

function GetProcessId(pName: PChar): dword;
begin
  Result := 0;
  Snap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  if Snap <> INVALID_HANDLE_VALUE then
     begin
      Process.dwSize := SizeOf(TPROCESSENTRY32);
      if Process32First(Snap, @Process) then
         repeat
          if lstrcmpi(Process.szExeFile, pName) = 0 then
             begin
              Result := Process.th32ProcessID;
              CloseHandle(Snap);
              Exit;
             end;
         until not Process32Next(Snap, @Process);
      Result := 0;
      CloseHandle(Snap);
     end;
end;
i:=OpenProcess(PROCESS_SET_INFORMATION,False,GetProcessId('notepad.exe'));
SetPriorityClass(i,HIGH_PRIORITY_CLASS);

PM MAIL   Вверх
popapo
Дата 25.2.2008, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 23.2.2008

Репутация: 1
Всего: 1



petlyura, спс
PM   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0743 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.