好好分析吧!
CString strCloseValve , strTem ;
CStdioFile StuFile;
    if(!StuFile.Open( "¶ÑÕ».txt", CFile::modeCreate 
    | CFile::modeWrite | CFile::typeText ) )
{
   AfxMessageBox("File ERROR");
    }
for( i = 0  ; i <  m_StackArray.GetSize(); i ++ )
{
stacktop.id = m_StackArray[ i ].id;
stacktop.x  = m_StackArray[ i ].x;
stacktop.y  = m_StackArray[ i ].y;
stacktop.nPipeLineID = m_StackArray[ i ].nPipeLineID ;
strTem.Format("ID:%4d   PipeID:%2ld    X:%11f   Y:%11f",
             stacktop.id , stacktop.nPipeLineID ,  stacktop.x , stacktop.y  );
strCloseValve = strTem ;
StuFile.WriteString( strCloseValve);//&ETH;&acute;&Egrave;&euml;&Ecirc;&yacute;&frac34;&Yacute;
StuFile.WriteString("\n");//&raquo;&Oslash;&sup3;&micro;&raquo;&raquo;&ETH;&ETH;;
if( i % 2 != 0 )
StuFile.WriteString("\n");//&raquo;&Oslash;&sup3;&micro;&raquo;&raquo;&ETH;&ETH;;
}
StuFile.Close();
HWND hEditWnd = ::GetWindow(::FindWindow("Notepad",NULL),GW_CHILD);//&raquo;ò&Otilde;&szlig;&Oacute;&Atilde;FindWindowEx&Otilde;&Ograve;Edit&Agrave;à
    if(hEditWnd == NULL)
{
ShellExecute(0,"Open","notepad.exe","&para;&Ntilde;&Otilde;&raquo;.txt",NULL,SW_NORMAL);
//AfxMessageBox("&frac14;&Ccedil;&Ecirc;&Acirc;±&frac34;&Euml;&Auml;&Ocirc;&Acirc;&Igrave;ì.txt&sup3;&Igrave;&ETH;ò&Icirc;&acute;&AElig;&ocirc;&para;&macr;");
}

解决方案 »

  1.   

    简洁如下:ShellExecute()
    HWND hEditWnd = ::GetWindow(::FindWindow("Notepad",NULL),GW_CHILD);//或者用FindWindowEx找Edit类
        if(hEditWnd == NULL)
    {
    ShellExecute(0,"Open","notepad.exe","堆栈.txt",NULL,SW_NORMAL);
    //AfxMessageBox("记事本四月天.txt程序未启动");
    }
      

  2.   

    准确地说,如果我想用execve来调用另一个程序,如何得到返回信息?
      

  3.   

    用CreateProcess,然后再用GetExitCodeProcess
      

  4.   

    如果不考虑移植,CreateProcess不是很好的选择吗?