adsl club

Справочник

Форум

Программы

Фильмы

Ресурсы

Файлообмен

Хостинг

Ростелеком
Вопрос по Delphi
Ответить на тему    Форум АДСЛ КлубаЦИФРОВОЙ ФЛЕЙМ :)ПРОГРАММИРОВАНИЕ
Автор Сообщение
Indigo
Ангел
СообщениеДобавлено: Сб 24-11-07 : 23-44    Заголовок сообщения: Вопрос по Delphi Ответить с цитатой

Я из своей программы хочу запустить другую прогу. Но запускать её нужно тогда, когда комп сильно ни о чём не думает.

Мои примерные предположения:
1. Запускать прогу через другой поток с минимальным приоритетом (фоновым). Как это сделать, я знаю, но не уверен насчёт результата, да и работы много.
или
2. Определить уровень загруженности процессора и, если он ничем не занят, то запускать прогу. Но я не знаю как узнать на сколь загружен проц.

Подскажите насчёт второго варианта или предложите свой вариант, plz...
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Отправить e-mail   Номер ICQ
Indigo
Ангел
СообщениеДобавлено: Вс 25-11-07 : 11-36    Заголовок сообщения: Ответить с цитатой

Никто не знает что ли?
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Отправить e-mail   Номер ICQ
Lindows
Форумчанин
СообщениеДобавлено: Пн 25-02-08 : 03-33    Заголовок сообщения: Ответить с цитатой

Код:
uses ...ToolWin, Windows...

procedure Run(App: string);
var
  ErrStr: string;

  PMSI: TStartupInfo;
  PMPI: TProcessInformation;
begin
  try
    CreateProcess(nil, @App[1], nil, nil, False, NORMAL_PRIORITY_CLASS,
      nil, nil, PMSI, PMPI);
  except
    ErrStr := 'Fault run process: ''' + App + '''';
    Application.MessageBox(@ErrStr[1], 'Failure process', MB_OK + MB_ICONERROR);
  end;
end;



Код:

uses ShellApi;

...

// Запуск файла
ShellExecute(Handle, nil, 'c:\windows\calc.exe', nil, nil, SW_SHOW);



Код:
function ExecAndWait(aCmd: string; WaitTimeOut: cardinal = INFINITE): Cardinal;
var
  si: STARTUPINFO;
  pi: PROCESS_INFORMATION;
  res: BOOL;
  r: cardinal;
begin
  with si do
  begin
    cb := sizeof(si);
    lpReserved := nil;
    lpDesktop := nil;
    lpTitle := PChar('External program "' + aCmd + '"');
    dwFlags := 0;
    cbReserved2 := 0;
    lpReserved2 := nil;
  end;
  res := CreateProcess(nil, PChar(aCmd), nil, nil, FALSE, 0, nil, nil, si, pi);
  if res then
    WaitForSingleObject(pi.hProcess, WaitTimeOut);
  GetExitCodeProcess(pi.hProcess, r);
  result := r;
end;

// Пример использования:
procedure Exec(CommandStr, WaitTime);
begin
  if ExecAndWait(CommandStr, WaitTime) = WAIT_FAILED then
    ShowMessage('Истекло время ожидания внешней программы ' + CommandStr);
end;
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Отправить e-mail Посетить сайт автора   Номер ICQ
Greh
Начинающий
СообщениеДобавлено: Сб 24-05-08 : 18-58    Заголовок сообщения: Ответить с цитатой

Lindows зачем такие изощрения с запуском? Smile Можно использовать функцию WinExec.
Код:
WinExec('c:\progname.exe',SW_NORMAL);
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
Показать сообщения:   
Ответить на тему    Форум АДСЛ КлубаЦИФРОВОЙ ФЛЕЙМ :)ПРОГРАММИРОВАНИЕ Часовой пояс: GMT + 7
Страница 1 из 1

 

 
Аватары: Вкл|Выкл   ЮзерИнфо: Вкл|Выкл   Подписи: Вкл|Выкл
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы можете скачивать файлы