VC执行批处理文件并获取结果输出到RichEdit控件
来源:互联网 发布:linux网页编程工具 编辑:程序博客网 时间:2024/05/17 23:51
VC++创建新的线程执行Windows批处理程序,并将批处理执行输出重定向输出到RichEdit控件中,
代码示例如下:
void CTestCMDDlg::OnBnClickedOk(){CString str;//ExecCmd();std::thread t(ThreadProc, this);t.detach();//CDialogEx::OnOK();}void CTestCMDDlg::ThreadProc(void* p){CTestCMDDlg *dlg = (CTestCMDDlg*)p;dlg->ExecCmd();}int CTestCMDDlg::ExecCmd(){SECURITY_ATTRIBUTES sa;HANDLE hRead, hWrite;sa.nLength = sizeof(SECURITY_ATTRIBUTES);sa.bInheritHandle = TRUE;sa.lpSecurityDescriptor = NULL;if (!CreatePipe(&hRead, &hWrite, &sa, 0)){DWORD dErr = GetLastError();CString szInfo;szInfo.Format(_T("Fail to Create Pipe Error: %d"), dErr);MessageBox(szInfo);return -1;}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;TCHAR szCommand[] = _T("test.bat");if (!CreateProcess(NULL, szCommand, NULL, NULL, TRUE, NULL, NULL, NULL, &si,&pi)){MessageBox(_T("Fail to create process"));return -2;}CloseHandle(hWrite);char buffer[128] = { 0 };DWORD bytesRead;for (;;){if (ReadFile(hRead, buffer, 128, &bytesRead, NULL) == NULL || bytesRead==0){break;//读取结束}else{TCHAR szShow[128] = { 0 };MultiByteToWideChar(CP_ACP, NULL, buffer, 128, szShow, 128);AppendText(szShow);}}return 0;// __super::OnOK(); }void CTestCMDDlg::AppendText(CString str){m_ctrlRichEdit.PostMessage(WM_VSCROLL, SB_BOTTOM, 0);m_ctrlRichEdit.SetSel(-1, -1);m_ctrlRichEdit.ReplaceSel((LPCTSTR)str);}
0 0
- VC执行批处理文件并获取结果输出到RichEdit控件
- 通过Kafka Admin API执行并获取结果到客户端
- C# 读取批处理文件(.bat)执行结果到程序显示
- 用C#执行批处理并输出结果
- vc++快速使用richedit控件
- vc++快速使用richedit控件
- 用NSTask执行外部命令并获取输出结果的方法
- 用NSTask执行外部命令并获取输出结果的方法
- Cocoa中用NSTask执行外部命令并获取输出结果的方法
- 用NSTask执行外部命令并获取输出结果的方法
- 用NSTask执行外部命令并获取输出结果的方法
- 用NSTask执行外部命令并获取输出结果的方法
- 使用Java代码执行系统命令/shell命令, 并获取输出结果
- VC 获取外部程序执行结果
- Linux执行结果不输出到终端
- VC 调用批处理,并获取返回结果.
- 执行命令并获取结果函数
- Java调用命令行并获取执行结果
- 2003 64位 方法运行asp ,连接数据库出现错误设置方法
- [Leetcode] 3. Longest Substring Without Repeating Characters
- 联合调研机构 三星公布Note7燃损原因并诚恳致歉
- SQL注入
- __attribute__((packed))详解
- VC执行批处理文件并获取结果输出到RichEdit控件
- 9.5.1
- css揭秘系列之半透明边框
- 1029. 旧键盘(20)
- 共同学习Java源代码-数据结构-HashSet(二)
- 用双向最大匹配法进行中文分词
- C#90课的主要内容
- 1023. Have Fun with Numbers (20)
- 替换WebView加载网页失败时的页面