调用CMD创建进程!!!急求啊!
void CSurveyDataExamine::RunCMD(){ CString strCMD = "cmd.exe"; SECURITY_ATTRIBUTES sa = {sizeof(SECURITY_ATTRIBUTES), NULL, TRUE};// HANDLE stdInput;// 管道读句柄 HANDLE toInput;// 管道写句柄 HANDLE stdOutput; CreatePipe(&stdInput, &toInput, &sa, 0);//创建匿名管道,该函数在创建匿名管道的同时返回两个句柄:管道读句柄和管道写句柄 stdOutput = GetStdHandle(STD_OUTPUT_HANDLE);//获取标准输出的句柄, 命令行的程序会把字符输出到屏幕上 LPTSTR lpCMD = (LPTSTR)(LPCTSTR)strCMD; STARTUPINFO si; PROCESS_INFORMATION pi; memset(&si, 0, sizeof(si)); si.cb = sizeof(si); si.dwFlags =/* STARTF_USESTDHANDLES |*/ STARTF_USESHOWWINDOW ; si.hStdError = stdOutput;//用于标识控制台窗口的缓存 si.hStdInput = stdInput; //用于设定供控制台输入和输出用的缓存的句柄 si.hStdOutput = stdOutput;//用于标识控制台窗口的缓存 si.wShowWindow = SW_SHOW; CreateProcess(NULL, lpCMD, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi);//父进程可以调用进程创建函数CreateProcess()生成子进程 //对你的父进程来说,就是stdout //写入命令 char szCmdLine[1024] = "d:\\teqc\\h2161080.11o \r\n"; //char szCmdLine[1024] = "dir\r\n"; DWORD bytesWritten; BOOL bWriteOk = WriteFile(toInput,szCmdLine, (int)strlen(szCmdLine)+1, &bytesWritten, NULL); CloseHandle(toInput); CloseHandle(stdOutput); CloseHandle(stdInput);}