调用控制台程序,并实施获取控制台输出文字
2013-08-28 21:02
417 查看
UINT calFunc(LPVOID pParam) { //调用exe //清空结构 CGetDosTextDlg *pDlg = (CGetDosTextDlg *)pParam; SECURITY_ATTRIBUTES sa; sa.nLength = sizeof(SECURITY_ATTRIBUTES); sa.lpSecurityDescriptor = NULL; sa.bInheritHandle = TRUE; if (!CreatePipe(&hRead,&hWrite,&sa,0)) { MessageBox(NULL, "Error On CreatePipe()", NULL, NULL); return 0; } 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("E:\\61\\61.exe",NULL//"c:\\Windows\\system32\\cmd.exe dir /?" ,NULL,NULL,TRUE,NULL,NULL,"E:\\61",&si,&pi)) { MessageBox(NULL, "Error on CreateProcess()", NULL, NULL); return 0; } CloseHandle(hWrite); return 0; }
void CGetDosTextDlg::OnButton2() { // TODO: Add your control notification handler code here HANDLE hThreadCalculate; //线程句柄 DWORD ThreadIDCalculate; //线程ID hThreadCalculate=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)calFunc, this, 0, &ThreadIDCalculate); SetTimer(1, 1000, NULL); }
void CGetDosTextDlg::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default char buffer[4096] = {0}; DWORD bytesRead; if (ReadFile(hRead,buffer,4095,&bytesRead,NULL) == NULL) { return; } m_Edit += buffer; if(bytesRead>0) UpdateData(false); Beep(1000, 10); CDialog::OnTimer(nIDEvent); }
相关文章推荐
- c# 调用控制台程序并传参 获取控制台输出(解释器的前台处理)
- c# 调用控制台程序并传参 获取控制台输出(解释器的前台处理)
- C# 调用控制台程序,并获取输出写入文件
- c# 调用控制台程序并传参 获取控制台输出(解释器的前台处理)
- C# 调用控制台程序,并获取输出写入文件
- c# 调用控制台程序并传参 获取控制台输出(解释器的前台处理)
- .Net ( C# ) 调用控制台程序并取得输出结果
- 利用管道获取控制台程序的标准输出
- 利用管道获取控制台程序的标准输出
- 调用一个控制台程序并取得其输出(PIPE)
- 调用控制台应用程序并获得程序的输出信息
- Java程序将输出到控制台的语句存入文件和windows DOS将文字输入到文件中
- .Net ( C# ) 调用控制台程序并取得输出结果
- VC 匿名管道获取控制台程序的输出
- 调用控制台应用程序并获得程序的输出信息
- 获取控制台窗口的句柄(HWND)和程序中输出回车键
- java 程序获取在exe 在控制台输出的信息
- 调用一个控制台程序并取得其输出
- C# 调用带参数的控制台程序 并将命令行输出的内容实时输出至窗体中的显示控件
- .Net ( C# ) 调用控制台程序并取得输出结果