//用管道实现VC下DOS命令调用以及结果获取,我找到这样一个例子,
//执行"ping"、"ipconfig"之类的命令没有问题,但是,
//当执行"md G:\"、"D:"文件方面的命令时,总会从下面红色部分return,
//GetLastError()分别返回2和5。怎么回事?怎么办
//望各位前辈帮我解决,我急用啊。
//新来的,实在拿不出分了,见谅
CString Cmdgo(CString DosString)//DosString:命令,Result:回显结果
{#define DOSCMD (LPTSTR)(LPCTSTR)DosString
         
       SECURITY_ATTRIBUTES sa;
       HANDLE hRead,hWrite;
       DWORD dw;
       sa.nLength = sizeof(SECURITY_ATTRIBUTES);
       sa.lpSecurityDescriptor = NULL;
       sa.bInheritHandle = TRUE;
       if (!CreatePipe(&hRead,&hWrite,&sa,0))
            return "未成功!";       STARTUPINFO si;
       PROCESS_INFORMATION pi; 
       si.cb = sizeof(STARTUPINFO);
       GetStartupInfo(&si); 
       si.hStdError = hWrite;
       si.hStdOutput = hWrite;
       si.wShowWindow = SW_HIDE;
       si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;            
       if (!CreateProcess(NULL,DOSCMD,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))
            {dw = GetLastError(); return "未成功!";}
   
       dw = GetLastError();
       CloseHandle(hWrite);  
   
     
       DWORD bytesRead;             
       while (true) 
       {
        if (ReadFile(hRead,cmdbuf,1023,&bytesRead,NULL) == NULL)//返回结果
        {break;}                
        Sleep(200); 
        }        CString Result;    
       Result.Format("%s\r\n",cmdbuf);
       return Result;
}