Параметры в CreateProcess

Romka_84
Дата: 27.11.2007 15:53:33
procedure Exec(Exe, Params : String);

var
    StartupInfo : TStartupInfo;
    ProcessInfo : TProcessInformation;
    cmd : String;
    fn, p : String;
begin
   ZeroMemory(@StartupInfo, sizeof(StartupInfo));
   with StartupInfo  do begin
      cb := SizeOf( TStartupInfo);
      lpReserved:=nil;
      lpTitle:=nil;
      dwFlags := STARTF_USESHOWWINDOW;
      wShowWindow := SW_SHOW;
      cbReserved2:=0;
      lpReserved2:= nil;
   end;


   cmd := '"'+Exe+'"';

   if CreateProcess(pChar(Params), pChar(cmd), nil,
        nil, false, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS,
        nil, nil,  StartupInfo, ProcessInfo)= true then begin

      WaitforSingleObject(ProcessInfo.hProcess,INFINITE);
   end;
   CloseHandle(ProcessInfo.hProcess);
end;

Имеется следующий код я хочу к исполняемому файлу EXE передать несколько параметров находящихся в переменной Params и все параметры разделены пробелами В чем ошибка?
Dimitry Sibiryakov
Дата: 27.11.2007 16:42:26

Romka_84
В чем ошибка?

Местами попутал команду и параметры. Первый паарметр - команда.

Posted via ActualForum NNTP Server 1.4

Romka_84
Дата: 27.11.2007 16:56:38
ПРобовал по всякому не получается Сюда уже от безисходности полез кто нибудь может дать совет У меня в качестве команды батник у него много параметров как их скомпоновать и записать в CreateProcess
Romka_84
Дата: 27.11.2007 19:46:19
Есть кто-нибудь кто может подсказать а то совсем замучался с этой процедурой?
Infernal V. Raven
Дата: 28.11.2007 04:15:49
Пример вызова
procedure UnpackZip(const AName: string);
  var
    DbfName: string;
    SI: TStartupInfo;
    PI: TProcessInformation;
    WaitRes: Cardinal;
    i: Integer;
  begin
    ZeroMemory(@SI, SizeOf(TStartupInfo));
    ZeroMemory(@PI, SizeOf(TProcessInformation));
    SI.wShowWindow := SW_SHOW;
    CreateProcess(nil, PCHar('pkunzip.exe -o ' + AName + ' ' + DirImport), nil, nil, True, CREATE_NEW_CONSOLE, nil,PChar(ExtractFileDir(Application.ExeName)), SI, PI);

    repeat
      WaitRes := WaitForSingleObject(PI.hProcess, 500);
      for i := 0 to Screen.FormCount - 1 do
        Screen.Forms[i].Update;
    until WaitRes = WAIT_OBJECT_0;

    DbfName := DirImport + '\' + LowerCase(ExtractFileName(AName));
    DbfName := AnsiReplaceText(DbfName, '.zip', '.dbf');
    CashFR.WaitClose;
    if FileExists(DbfName) then
      if MessageBox(Self.Handle, PChar('╚ьяюЁЄшЁютрЄ№ Їрщы ' + ExtractFileName(DbfName)), '╩рёёр',
        MB_ICONQUESTION + MB_YESNO) = mrYes then
        ImportFile := DbfName;
  end;
Romka_84
Дата: 28.11.2007 10:12:11
Я так и пробовал. Если я в первый или во воторой параметры CreateProcess засовываю только ися бат файла то он начинает выполняться но как только я присоединяю к имени батника еще и параметры он не работает Что делать?
Macks
Дата: 28.11.2007 11:49:02
Romka_84
Есть кто-нибудь кто может подсказать а то совсем замучался с этой процедурой?


Батник это не программа.

Смотри WinExec, через него батники запускаются с параметрами.