procedure RunProgram(cmdStr:string; Wait:Boolean; ShowWindow:Word);
var si:TStartupInfo;
pi:TProcessInformation;
s:string;
begin
FillChar(si, SizeOf(si), 0);
si.cb := SizeOf(si);
si.dwFlags:=STARTF_USESHOWWINDOW;
si.wShowWindow := ShowWindow;
s:=cmdStr;
UniqueString(s);
getlasterror;
if not CreateProcess(nil, PChar(S), NIL, NIL, False, 0, NIL, NIL, si, pi) then
showMessageFmt('Ошибка %d. %s',[getlasterror,SysErrorMessage(getlasterror)]);
if wait then
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
end;