最近再做一个关于MFC的程序,在主界面上需要调用一个可执行程序,但是吧!我还想让这个可执行程序指定的打开一个文件,例如吧!需要调用一个画图程序,但是我还希望这个画图程序在被我调用打开的同时,能够打开我已经画好的一个图形,不知道该怎么样才能实现这个功能,求大哥们帮帮忙!!!

解决方案 »

  1.   

    传递参数就行了.
    比如你的画图程序叫 DrawImage.exe 的话.
    ShellExecute(NULL, "open", "C:\\DrawImage.exe", "传递的参数如("C:\\123.bmp")", NULL, SW_SHOWNORMAL); // 打开文件然后你 要在你的画图程序的InitInstance里面接受参数. this->m_lpCmdLine就是你传过来的"C:\\123.bmp"..判断有参数你就执行打开文件操作就行了.没有就正常启动程序!
      

  2.   

    首选要确定你所要调用的可执行程序能否传递参数,可以就像一楼所说的直接ShellExecute调用传递参数.
    不行的话就没有办法,除非你能修改那个可执行程序为可以启动接受参数.
      

  3.   

    用CreateProecss也可以。
    PROCESS_INFORMATION piProcInfo; 
    STARTUPINFO siStartInfo;// Set up members of STARTUPINFO structure.
    siStartInfo.cb = sizeof(STARTUPINFO); 
    siStartInfo.lpReserved = NULL;
    siStartInfo.lpReserved2 = NULL; 
    siStartInfo.cbReserved2 = 0;
    siStartInfo.lpDesktop = NULL; 
    siStartInfo.dwFlags = 0;// Create the child process.
    CreateProcess(NULL,
    "\"C:\\Program Files\\MyApp.exe\"  1.bmp",
    NULL, // process security attributes
    NULL, // primary thread security attributes
    0, // handles are inherited
    0, // creation flags
    NULL, // use parent's environment
    NULL, // use parent's current directory
    &siStartInfo, // STARTUPINFO pointer
    &piProcInfo); // receives PROCESS_INFORMATION
      

  4.   

    就是呀!怎么去找画图程序中的InitInstance呀!它们都是封装好的!!!
      

  5.   

    你的需求楼上已经实现了啊
    你要找什么InitInstance
      

  6.   

    给exe传参就可以了啊。 这个前提是exe已经有处理参数的功能了。 比如一楼给你的画图程序。如果你调用别人的程序, 人家又没有处理参数, 这个你是没办法。