我有多文档和单文档程序各一个,处理一种自组织的文件,但没办法用SHELLEXECUTE,说什么内存不能READ用运行打入文件全路径也是一样啊总之发现我的程序不接受参数我的目的是在另一个EXE中,用SHELLEXECUTE调用上诉程序并带开指定文件因赶时间,没心思仔细查询了,请人指教?

解决方案 »

  1.   

    GetCommandLine()得不到参数?
      

  2.   

    用这个吧 STARTUPINFO si;
    PROCESS_INFORMATION pi; ZeroMemory( &si, sizeof(si) );
    si.cb = sizeof(si);
    si.dwFlags |= STARTF_USESHOWWINDOW;
    si.wShowWindow = SW_SHOW;
    ZeroMemory( &pi, sizeof( pi ) ); char file[ 300 ] = "a.exe para";
    if( !CreateProcess( NULL, // No module name (use command line). 
    file, // Command line. 
    NULL,             // Process handle not inheritable. 
    NULL,             // Thread handle not inheritable. 
    FALSE,            // Set handle inheritance to FALSE. 
    0,                // No creation flags. 
    NULL,             // Use parent's environment block. 
    NULL,             // Use parent's starting directory. 
    &si,              // Pointer to STARTUPINFO structure.
    &pi )             // Pointer to PROCESS_INFORMATION structure.

    {
    AfxMessageBox( "CreateProcess failed." );
    }
      

  3.   

    不行啊比如我用  ShellExecute(NULL,   "open",   "D:\\a.doc",   NULL,   NULL,   SW_SHOWNORMAL); 可以启动WORD并打开该文档,但是换了我自己的文件类型就不行了, 说XX内存不能READ郁闷,怎么解决啊,哪位能直接给些代码?
      

  4.   

    MFC生成的EXE一般在注册表里都有吧.我拖拉文件入程序里都可以打开,怎么在运行里输入文件全路径就出错.还说找不到文件,郁闷
      

  5.   

    拖拉文件机制不同。你看看C...App::InitInstance()里面有没有注册文件类型,就是
    AddDocTemplate(pDocTemplate);
    // 启用“DDE 执行”
    EnableShellOpen();
    RegisterShellFileTypes(TRUE);然后有没有处理命令行参数的部分:
    // 分析标准外壳命令、DDE、打开文件操作的命令行
    CCommandLineInfo cmdInfo;
    ParseCommandLine(cmdInfo);
    if (!ProcessShellCommand(cmdInfo))
    return FALSE;
      

  6.   

    MFC向导生成的都有的我双击文件都不能启动程序并打开文件,郁闷
      

  7.   

    在Projects->Settings->Debug->Program Arguments:中加上全路径文件名,然后F5调试一下就知道什么原因了。
      

  8.   

    调试一下,在App类的InitInstance函数里单步执行
      

  9.   

    ShellExecute(NULL,   "open",   "你的指定程序",   NULL,   "要打开得文件路径",   SW_SHOWNORMAL);