Показать сообщение отдельно
  #20  
Старый 09.02.2012, 00:23
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Смотри в сторону CreateProcess.
Код:
function WinExecAndWait32(FileName:String; Visibility : integer):integer;
var
  zAppName    : array[0..512] of Char;
  zCurDir     : array[0..255] of Char;
  WorkDir     : String;
  StartupInfo : TStartupInfo;
  ProcessInfo : TProcessInformation;
begin
  StrPCopy(zAppName, FileName);
  GetDir(0, WorkDir);
  StrPCopy(zCurDir, WorkDir);
  FillChar(StartupInfo, SizeOf(StartupInfo), 0);
  StartupInfo.cb := SizeOf(StartupInfo);
  StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
  StartupInfo.wShowWindow := Visibility;
  if not CreateProcess(nil,
                       zAppName,                      { указатель на строку с командной строкой }
                       nil,                           { указатель на атрибуты безопасности процесса }
                       nil,                           { указатель на атрибуты безопасности потока }
                       False,                         { флаг дескриптора предка }
                       CREATE_NEW_CONSOLE or          { флаги создания }
                       NORMAL_PRIORITY_CLASS,
                       nil,                           { указатель на новый блок среды }
                       nil,                           { указатель на имя текущего каталога }
                       StartupInfo,                   { указатель на STARTUPINFO }
                       ProcessInfo) then
    Result := -1 { указатель на PROCESS_INF }
  else
  begin
    WaitforSingleObject(ProcessInfo.hProcess, INFINITE);
    GetExitCodeProcess(ProcessInfo.hProcess, Result);
  end;
end;
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием