tags:

views:

408

answers:

4
A: 

I think ShellExecute() is what you're looking for.

John T
A: 

The following solves the spaces in the path problem. Catching the output of the command is much more difficult, however:

#include <string>
#include <cstdlib>
using namespace std;

int main() {
    string cmd = "\"c:\\program files\\notepad++\\notepad++.exe\"";
    system( cmd.c_str() );
    return 0;
}
anon
A: 

Never use system() in Windows ! Just redirect i/o handles.

A: 

I do this (note - this is VB.NET code), so I can write the output of the command to my log file (it's wrapped in a RunCommand() method):

 Try
    Dim myprocess As New Process()
    myprocess.StartInfo.FileName = "C:\Program Files\TextPad 5\Textpad.exe"
    myprocess.StartInfo.RedirectStandardOutput = True
    myprocess.StartInfo.UseShellExecute = False

    ' inArgs are the arguments on the command line to the program
    myprocess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
    myprocess.StartInfo.Arguments = "C:\readme0.txt"

    ' the dir to set as default when the program runs
    Then myprocess.StartInfo.WorkingDirectory = "C:\Program Files\TextPad 5\"

    myprocess.Start()

    ' grab a reader to the standard output of the program
    procReader = myprocess.StandardOutput()

    ' read all the output from the process
    While (Not procReader.EndOfStream)
       procLine = procReader.ReadLine()

       ' write the output to my log
       writeNotes(procLine)
    End While

    procReader.Close()

 Catch ex As Exception
    ' Write the error to my log
    writeErrors("Couldn't execute command "C:\Program Files\TextPad 5\Textpad.exe", ex)
 End Try

Ron

Ron Savage