多进程demo
2024-09-01 00:49:45
多进程实现DOS重定向输出,界面如下:
主要的代码实现如下:
#define MAXREADBUFFERLEN (60 * 1000) void CRedirectDlg::OnBnClickedButtonRun()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
CString strCommand, strFileName(_T("Redirect.txt"));
m_strCommand.TrimRight(_T(" "));
if (m_strCommand == _T(""))
{
return;
}
strCommand.Format(_T("cmd.exe /c \"%s\">%s"), m_strCommand, strFileName); //创建一个不要出现DOS窗口的、影藏的命令执行线程
STARTUPINFO si;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(STARTUPINFO);
si.wShowWindow = SW_HIDE;
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
PROCESS_INFORMATION pi;
BOOL res = CreateProcess(NULL, strCommand.GetBuffer(), NULL, NULL, NULL,
NORMAL_PRIORITY_CLASS | CREATE_NO_WINDOW, NULL, NULL, &si, &pi);
if (!res)
{
AfxMessageBox(_T("创建线程出错。"));
return;
} //等待进程执行完毕
WaitForSingleObject(pi.hProcess, INFINITE); //如果打开文件失败,则有可能文件仍在使用中,可以多次读取
TCHAR szBuff[MAXREADBUFFERLEN] = { };
BOOL bSuccess = FALSE;
try
{
CFile file;
if (file.Open(strFileName, CFile::modeReadWrite, NULL))
{
file.Read((TCHAR*)szBuff, MAXREADBUFFERLEN);
file.Close();
bSuccess = TRUE;
}
}
catch (CFileException e)
{
Sleep();
} //如果打开文件成功,则删除临时文件,并显示出结果
if (bSuccess)
{
DeleteFile(strFileName);
m_strResult.Format(_T("%s"), (TCHAR*)szBuff);
}
else
{
AfxMessageBox(_T("程序执行出错。"), MB_ICONERROR | MB_OK);
} UpdateData(FALSE);
}
下载地址:http://pan.baidu.com/s/1eQl6pTC
最新文章
- MapReduce 过程分析
- oracle--trunc与to_char的区别
- 技术:使用Amazon S3接口云存储(Java版)
- mysql 索引分类
- Oracle rowid
- 基于安卓高仿how-old.net实现人脸识别估算年龄与性别
- ......那么Win8.1怎么去掉文件夹?
- 【转载】jxl操作excel 字体 背景色 合并单元格 列宽等 .
- Android 定时器实现的几种方式和removeCallbacks失效问题详解
- GridView分页排序
- HubbleDotNet 学习之路
- C# 枚举
- Android中使用HttpGet和HttpPost访问HTTP资源
- 【转】Android源码下载过程的一些注意事项
- 通过改变viewport 实现网站自适应
- Python OJ 从入门到入门基础练习 10 题
- spring boot到底帮我们做了那些事?
- Solidity高级理论(二):Gas
- pg安装入门
- 使用C#爬小说
热门文章
- 美国是一个";愚蠢而落后的国度";--大家千万别去
- 利用WPF建立自己的3d gis软件(非axhost方式)(十一)SDK中的动画系统
- Entity Framework知识小总结
- 自己动手编写一个VS插件(六)
- C# 与.NET2.0 中类型Type的GetMethod方法
- [Unity3D]Unity3D游戏开发Lua随着游戏的债券(在)
- 我的Spring之旅(二):为请求加入參数
- Matlab Tricks(十九)—— 序列左右移的实现
- Windows下程序打包发布时的小技巧(使用Dependency Walker侦测不理想,改用VS自带的dumpbin则万无一失,还可查看dll导出的函数)
- EasyUI-DataGrid多线动态实现选择性合并