Цитата:
Сообщение от 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).