How to run command line from Delphi?

前端 未结 1 529
逝去的感伤
逝去的感伤 2020-12-19 16:31

How can I run this command from my Delphi application?

C:\\myapppath\\appfolder>appname.exe /stext save.txt

I tried the followin

1条回答
  •  感情败类
    2020-12-19 16:56

    To run a CMD command, you need to use the /C flag of cmd.exe:

    ShellExecute(0, nil, 'cmd.exe', '/C cd C:\myapppath\appfolder', nil, SW_HIDE);
    ShellExecute(0, nil, 'cmd.exe', '/C appname.exe /stext save.txt', nil, SW_HIDE);
    

    However, this will create two different sessions, so it will not work. But you can use ShellExecute to run appname.exe directly, like so:

    ShellExecute(0, nil, 'appname.exe',  '/stext save.txt', nil, SW_HIDE);
    

    But you need to specify the filenames properly.

    I would do

    var
      path: string;
    
    begin
      path := ExtractFilePath(Application.ExeName);
      ShellExecute(0, nil, PChar(Application.ExeName), PChar('/stext "' + path + 'save.txt"'), nil, SW_HIDE);
    end;
    

    in case appname.exe is the current application. Otherwise, replace Application.ExeName with the full path of appname.exe.

    0 讨论(0)
提交回复
热议问题