We help IT Professionals succeed at work.

Check out our new AWS podcast with Certified Expert, Phil Phillips! Listen to "How to Execute a Seamless AWS Migration" on EE or on your favorite podcast platform. Listen Now

x

CreateProcess / Command Line Parsing MFC SDI

JulianPugh
JulianPugh asked
on
Medium Priority
1,097 Views
Last Modified: 2013-11-20
Want to use CreateProcess to launch another MFC SDI application the First Parameter and passing a file path in the second parameter for the launched program to load.  Making the call as follows:

PROCESS_INFORMATION procInfo;
      BOOL processStarted;
      memset(&suInfo, 0, sizeof(suInfo));
      suInfo.cb = sizeof(suInfo);
      // Kick off the Next Program
      processStarted =       
      CreateProcess(
            "C:\\Program Files\\BuildCustomCatalog\\Chass_Header_New\\Chass_Header_New.exe",
            "C:\\CCBuild\\Commands_New\\9778_W_1_4B974338.txt",
            NULL,                              // process security attributes
            NULL,                              // thread security attributes
            FALSE,                              // handle inheritance flag
            NORMAL_PRIORITY_CLASS,                                      // handle inheritance flag
            NULL,                              // pointer to new environment block
            NULL,                              // pointer to current directory name
            &suInfo,                                        // pointer to STARTUPINFO
            &procInfo);                        // pointer to PROCESS_INFORMATION
}

The launched program chokes on this call.  If I execute the CreateProcess call using NULL for parameter 2 (Command Line Argument i.e. pass no command line argument), the launched program has no problem.  The launched program seems to choke at the "if (!ProcessShellCommand(cmdInfo)) return FALSE;" call in the CWinApp InitInstance() function when a file path is included in the command line;

Any ideas would be appreciated.

Thanks,

Julian
Comment
Watch Question

Commented:
Unlock this solution and get a sample of our free trial.
(No credit card required)
UNLOCK SOLUTION
Top Expert 2007

Commented:
Does the same thing happen when you specify the command line in your project settings and run the Chass_Header_New.exe from within the developer's studio?

When you say the program chokes what do you mean? Throws an exception? Asserts? Hangs forever?

You are calling ProcessShellCommand() after the following commands:

  // Parse command line for standard shell commands, DDE, file open
  CCommandLineInfo cmdInfo;
  ParseCommandLine(cmdInfo);

And after your document has been setup.

The CWinApp::ProcessShellCommand() routine in APPUI2.CPP has a switch and the following is executed when you pass your parameters:

  case CCommandLineInfo::FileOpen:
    if (!OpenDocumentFile(rCmdInfo.m_strFileName))
      bResult = FALSE;
    break;

Can your document's OpenDocumentFile handle the file name?

Good Luck,
Steve

Author

Commented:
Alex,

Passed the exe file path and file to load in the second CreateProcess parameter, as you suggested, and everything works perfectly fine.  I really appreciate your help.

thanks,

Julian
Unlock the solution to this question.
Thanks for using Experts Exchange.

Please provide your email to receive a sample view!

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.