Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

CreateProcess / Command Line Parsing MFC SDI

Posted on 2004-04-02
3
Medium Priority
?
1,008 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
0
Comment
Question by:JulianPugh
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
3 Comments
 
LVL 48

Accepted Solution

by:
AlexFM earned 2000 total points
ID: 10742386
1) Try to run this program (Chass_Header_New.exe) from command prompt with the same parameter - what happens?
2) Both program name and parameter may be in the second CreateProcess parameter:

CreateProcess(
         NULL,
         "C:\\Program Files\\BuildCustomCatalog\\Chass_Header_New\\Chass_Header_New.exe  C:\\CCBuild\\Commands_New\\9778_W_1_4B974338.txt",
         ...


0
 
LVL 30

Expert Comment

by:SteveGTR
ID: 10742552
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
0
 

Author Comment

by:JulianPugh
ID: 10742560
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
0

Featured Post

Learn how to optimize MySQL for your business need

With the increasing importance of apps & networks in both business & personal interconnections, perfor. has become one of the key metrics of successful communication. This ebook is a hands-on business-case-driven guide to understanding MySQL query parameter tuning & database perf

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction: Dynamic window placements and drawing on a form, simple usage of windows registry as a storage place for information. Continuing from the first article about sudoku.  There we have designed the application and put a lot of user int…
Introduction: Ownerdraw of the grid button.  A singleton class implentation and usage. Continuing from the fifth article about sudoku.   Open the project in visual studio. Go to the class view – CGridButton should be visible as a class.  R…
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.
Video by: ITPro.TV
In this episode Don builds upon the troubleshooting techniques by demonstrating how to properly monitor a vSphere deployment to detect problems before they occur. He begins the show using tools found within the vSphere suite as ends the show demonst…
Suggested Courses

722 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question