Показать сообщение отдельно
  #2  
Старый 23.12.2013, 14:00
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от nerZEROn
Собственно, вопрос: как правильно считать значения ключей из секции ini-файла и запихнуть их в CreateProcess, снабдив все это отдельным потоком?
В модуле IniFiles есть класс TMemIniFile - открываешь с его помощью свой ini-файл, методом ReadSection читаешь из секции 'soft' имена ключей и потом в цикле методом ReadString считываешь каждый параметр и отдаёшь его в CreateProcess.

CreateProcess используешь примерно так:
Код:
var
  SI: TStartupInfo;
  PI: TProcessInformation;
.....
begin
.....
  FillChar(SI, SizeOf(SI), 0);
  SI.cb := SizeOf(SI);
  SI.wShowWindow := SW_NORMAL;
  SI.dwFlags := STARTF_USESHOWWINDOW;

  if CreateProcess('Запускаемое приложение', nil, nil, nil, False, 0, nil, nil, SI, PI) then
  try
    while True do
    begin
      if (WaitForSingleObject(PI.hProcess, 100) <> WAIT_TIMEOUT) or Terminated then Break;
    end;
  finally
    CloseHandle(PI.hProcess);
    CloseHandle(PI.hThread);
  end;
.....
end;

Для создания отдельного потока, используй BeginThread или создавай своего потомка от TThread или можешь использовать дополнительные компоненты - просто бросаешь такую компоненту на форму и задаёшь ей нужные обработчики событий. Например в библиотеке RxLib есть такая компонента, или вот здесь есть подобная (TBMDThread).
Ответить с цитированием