Конференция "WinAPI" » как запустить программу через командную строку с параметрами?
 
  • vvavva © (11.05.09 11:08) [0]
    как запустить программу через командную строку с параметрами?

    как программно запустить CONV3DS.EXE с пораметрами и указанным файлом?
    чтоб сконвертировал , то что нужно!
    желательно код делфи!
    у меня есть код но чёт я ни так делаю!? и в итоге ничего не выходит!


    //Выполнить команду в командной строке
    function ExecAndWait(const ExeName, Params: string; out ExitCode: Cardinal; Timeout: Cardinal = MaxInt): boolean;
    var
     sui: TStartupInfo;
     pi: TProcessInformation;
    begin
     ZeroMemory(@sui, SizeOf(sui));
     sui.cb := SizeOf(sui);
     Win32Check(CreateProcess(PChar(ExeName), PChar(Params), nil, nil, False, 0, nil,
       nil, sui, pi));
     try
       CloseHandle(pi.hThread);
       Result := WaitForSingleObject(pi.hProcess, Timeout) = WAIT_OBJECT_0;
       if Result then
         Win32Check(GetExitCodeProcess(pi.hProcess, ExitCode));
     finally
       CloseHandle(pi.hProcess);
     end;
    end;

    procedure ExecCommandLine(const Cmd: string);
    var
     Dummy: Cardinal;
    begin
     ExecAndWait(GetEnvironmentVariable('ComSpec'), '/C ' + Cmd, Dummy);
    end;

    //Пример

    procedure TForm1.Button1Click(Sender: TObject);
    begin
     ExecCommandLine('rd /S /Q \"c:\test\"'); // удаляем папку c:\test со всеми подпапками
    end;



    я запускаю так

    ExecCommandLine(
     '\"E:\Convektor\CONV3DS.EXE\" -x aP4.3DS'
     );



    CONV3DS кажись появляется но конвертации не происходит!

    через ПУСК-ВЫПОЛНИТЬ- "E:\Convektor\CONV3DS.EXE" -x aP4.3DS всё ок!
    ХЕЛП! ПЛИЗ!
  • Юрий Зотов © (11.05.09 11:36) [1]
    Попробуйте так:
    CreateProcess(nil, PChar(CommandLine), ...)


    и в CommandLine передавайте полную командную строку:
    E:\Convektor\CONV3DS.EXE" -x aP4.3DS

  • Anatoly Podgoretsky © (11.05.09 15:22) [2]
    aP4.3DS надо указать полное имя.
  • vvavva © (11.05.09 15:58) [3]
    вот рабочая версия!

    ShellExecute(0 //Handle родительского окна, в который будут передаваться сообщения запускаемого приложения.
               ,PChar('open') //По умолчанию open, если указать nil.
               ,PChar('E:\Convektor\CONV3DS.EXE') //имя файла или документа, интернет ссылка, e-mail адрес
               ,PChar('-x aP4.3DS') //параметры, передаваемые приложению в командной строке.
               ,PChar('E:\Convektor\') //каталог по умолчанию куда бут выложен результат
               ,SW_SHOWNORMAL //стиль окна
               );

    пока что всем спасибо !
  • Anatoly Podgoretsky © (11.05.09 16:13) [4]
    Это и есть полное имя E:\Convektor\aP4.3DS, только разбитое на две части.
  • Anatoly Podgoretsky © (11.05.09 16:15) [5]
    Кстати это не одно и тоже, что ExecAndWait - работает по разному.
  • Юрий Зотов © (11.05.09 18:43) [6]
    > vvavva ©   (11.05.09 15:58) [3]

    А ожидание завершения? Или не нужно?
  • Игорь Шевченко © (11.05.09 22:14) [7]

    > E:\Convektor


    слово какое-то знакомое. Был уже на нашей памяти "конвектор форматов" небезызвестный
  • Германн © (12.05.09 01:12) [8]

    > Игорь Шевченко ©   (11.05.09 22:14) [7]

    Было.
    И-нет - "всемирная помойка"!
    А где ты думаешь автор "надыбал" сию реализацию функции  ExecAndWait?
 
Конференция "WinAPI" » как запустить программу через командную строку с параметрами?
Есть новые Нет новых   [134435   +33][b:0][p:0.001]