Code:

var

pi : TProcessInformation;

si : TStartupInfo;

begin

ZeroMemory(@si,sizeof(si));

si.cb:=SizeOf(si);

if not CreateProcess(

PChar(lpApplicationName), //pointer to name of executable module

PChar(lpCommandLine), // Command line.

nil, // Process handle not inheritable.

nil, // Thread handle not inheritable.

False, // Set handle inheritance to FALSE.

0, // No creation flags.

nil, // Use parent's environment block.

nil, // Use parent's starting directory.

si, // Pointer to STARTUPINFO structure.

pi ) // Pointer to PROCESS_INFORMATION structure.

then begin

Result:=false;

RaiseLastWin32Error;

Exit;

end;

WaitForSingleObject(pi.hProcess,INFINITE);

CloseHandle(pi.hProcess);

CloseHandle(pi.hThread);

// ... здесь твой код

end;

 Автор ответа: TAPAKAH

 

Примечание Vit:

Если заменить

 WaitForSingleObject(pi.hProcess,INFINITE);

 на

 while WaitforSingleObject(PI.hProcess,200)=WAIT_TIMEOUT do   application.ProcessMessages;

 то вызывающая программа не будет казаться завешанной и будет отвечать на сообщения

 

 

Примечание Mikel: В RxLib есть функция для этого: FileExecuteWait

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить