//用管道实现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;
}
"cmd.exe /c md G:\"