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, WS_HIDE);
ShellExecute(0, nil, 'cmd.exe', '/C appname.exe /stext save.txt', nil, WS_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
.