Question:
What code do I use for Delphi to run a program and use command line parameters inputted by the user?
Answer:
This code will allow you to launch other applications from your own. To use this function, simply supply a fully qualified path name in ProgramName and any arguments on the command line following the program name separated by a space. As the help file states: "If lpApplicationName is NULL, the first white space-delimited token of the command line specifies
the module name..." In English, the characters before the first space encountered (or if no space is encountered as in a single program call) is interpreted as the EXE to execute. The rest of the string is the argument line.
procedure ExecNewProcess(ProgramName : String);
var
StartInfo : TStartupInfo;
ProcInfo : TProcessInformation;
CreateOK : Boolean;
begin
{ fill with known state }
FillChar(StartInfo,SizeOf(TStartupInfo),#0);
FillChar(ProcInfo,SizeOf(TProcessInformation),#0);
StartInfo.cb := SizeOf(TStartupInfo);
CreateOK := CreateProcess(nil, PChar(ProgramName), nil, nil,False,
CREATE_NEW_PROCESS_GROUP+NORMAL_PRIORITY_CLASS,
nil, nil, StartInfo, ProcInfo);
{ check to see if successful }
if CreateOK then
//may or may not be needed. Usually wait for child processes
WaitForSingleObject(ProcInfo.hProcess, INFINITE);
end;
For example, let's say that the user inputted: "/a /b /c" as command line arguments, and you captured them into a string var called "args." To use ExecNewProcess, you'd simply do this:
MyProgramName := 'C:\Program Files\MyProgram\MyProgram.EXE';
ExecNewProcess(MyProgramName + ' ' + args);
Pretty simple...