MFC中的CreateProcess函数的应用

2023-05-16

MFC与CMD信息的传递与返回

	HANDLE hRead,hWrite;
	SECURITY_ATTRIBUTES sa;    
	sa.nLength = sizeof(SECURITY_ATTRIBUTES);    
	sa.lpSecurityDescriptor = NULL; //使用系统默认的安全描述符    
	sa.bInheritHandle = TRUE; //创建的进程继承句柄

	if (!CreatePipe(&hRead,&hWrite,&sa,0)) //创建匿名管道
	{        
		MessageBox("CreatePipe Failed!","提示",MB_OK | MB_ICONWARNING);        
		return;
	}

	STARTUPINFO si;    
	PROCESS_INFORMATION pi;

	ZeroMemory(&si,sizeof(STARTUPINFO));
	si.cb = sizeof(STARTUPINFO);    
	GetStartupInfo(&si);    
	si.hStdError = hWrite;    
	si.hStdOutput = hWrite;    //新创建进程的标准输出连在写管道一端

//	si.wShowWindow = SW_HIDE; //隐藏窗口  
	si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;

	char cmdline[200]; 
 	CString tmp,stredit2;
 	GetDlgItemText(IDC_EDIT2,stredit2); //获取编辑框中输入的命令行
 	tmp.Format("cmd /c %s",stredit2);
 	sprintf(cmdline,"%s",tmp);

if (!CreateProcess(NULL,
    		cmdline,
    		NULL,
    		NULL,
    		TRUE,/*打开句柄都将被子进程继承,信息的交互*/
    		CREATE_NO_WINDOW,/*这里不为该进程创建一个控制台窗口,不显示cmd执行窗口*/
    		NULL,
    		NULL,
    		&si,&pi)) //创建子进程
    	{
    		MessageBox("CreateProcess Failed!","提示",MB_OK | MB_ICONWARNING);        
    		return;
    	}
    	CloseHandle(hWrite); //关闭管道句柄

	char buffer[4096] = {0};
	CString strOutput;
	DWORD bytesRead;

	while (true) 
	{
		if (ReadFile(hRead,buffer,4095,&bytesRead,NULL) == NULL) //读取管道
			break;

		strOutput += buffer;
		SetDlgItemText(IDC_EDIT1,strOutput); //显示输出信息到编辑框,并刷新窗口
		UpdateWindow();
		Sleep(100);
	}
	CloseHandle(hRead);

MFC调用bat文件

	PROCESS_INFORMATION pi;
	STARTUPINFO si;
	ZeroMemory(&si, sizeof(si));
	si.cb = sizeof(si);
	si.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
	if (CreateProcess("循环执行.bat",// 循环执行.bat位于工程所在目录下
		NULL,
		NULL,
		NULL,
		NULL,
		NULL,// 这里为该进程创建一个控制台窗口
		NULL,
		NULL,
		&si, &pi))
	{
//		WaitForSingleObject(pi.hProcess, INFINITE);// 等待bat执行结束

		CloseHandle(pi.hProcess);
		CloseHandle(pi.hThread);
	}

两者CreateProcess的不同
1: if(!CreateProcess(NULL,cmdline,NULL,NULL,TRUE,CREATE_NO_WINDOW,NULL,NULL,&si,&pi)) //创建子进程
2:if (CreateProcess(“循环执行.bat”,NULL,NULL,NULL,NULL,NULL,NULL,NULL,&si, &pi)) // 循环执行.bat位于工程所在目录下

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MFC中的CreateProcess函数的应用 的相关文章

  • NestJs-项目创建

    NestJs Nest js 用于构建高效且可伸缩的服务端应用程序的渐进式 Node js 框架 项目创建 构建工具 可以使用 npm yarn pnpm进行包管理 xff0c 但议使用pnpm建议安装nrm镜像源管理工具 xff0c 可以
  • C++ 字符串格式化

    使用snprintf格式化字符串使用boost format格式化字符串使用stringstream格式化字符串 具体示例 使用snprintf格式化字符串 span class token macro property span clas
  • 玩客云 一个百元级的微型服务器

    前言 下面这段基本是copy的 xff0c 就是图个完整 xff0c 不要觉得奇怪哈 玩客云是一款前些年很火的矿机 xff0c 曾经在官网售卖 xffe5 599 xff0c 现在已经沦落到 xffe5 45包邮的田地了 当然这边一般有两种
  • OpenStack双节点部署—M Manila(共享文件系统服务)

    Manila安装 一 数据库配置二 创建服务凭证和API端点三 安装并配置Heat四 启动服务并设置开机自启 一 数据库配置 Controller节点 mysql span class token operator span uroot s
  • Dockerfile简介

    1 什么是dockerfile Dockerfile是一个包含用于组合映像的命令的文本文档 可以使用在命令行中调用任何命令 Docker通过读取Dockerfile中的指令自动生成映像 docker build命令用于从Dockerfile
  • 论文阅读笔记1:EKT: Exercise-aware Knowledge Tracing for Student Performance Prediction

    该篇论文于2019年在IEEE发表 xff0c 作者为 xff1a Qi Liu Zhenya Huang Yu Yin Enhong Chen Hui Xiong Yu Su and Guoping Hu 等 知识追踪 xff08 Kno
  • 树莓派 同时使用有线和无线网卡

    树莓派同时使用有线和无线 使能双网卡待机 添加路由使用规范 备注 192 168 1 0 表明所有以192 168 1开始的网段 都将从后面的设备发送相应的数据 使能双网卡待机 Linux通过设置默认的网络信息实现双网卡待机 设置方法如下
  • c++20 协程本质

    c 43 43 20 协程本质 背景 xff1a 最近因项目关系 xff0c web端 xff0c js异步调用 xff0c 发现跟本门的C 43 43 20 还是有些不一样的 xff0c 本文主要从另外一个角度来看 什么是协程 协程是能暂
  • Manjaro 21安装搜狗输入法

    Manjaro 21安装搜狗输入法 文章目录 Manjaro 21安装搜狗输入法安装输入法Step 1 打开 96 Manjaro Hello 96 点击 96 Application 96 Step 2 切换语言到 96 Chinese
  • Unicode控制字符

    Unicode控制字符 一 前言 在所有主要的Web浏览器中内存中的字符顺序 xff08 逻辑 xff09 与它们显示的顺序 xff08 可视 xff09 是不同的 Unicode 定义了它其中每个字符的方向属性 xff0c 浏览器应用的一
  • tomcat-9.0.36的安装与环境配置

    环境 xff1a 操作系统 xff1a Windows10 64bitTomcat版本 xff1a Tomcat 9 0 36 一 从官网下载tomcat的安装包 1 用浏览器打开Tomcat的官网 官网地址 xff1a https tom
  • 已无线上网的ubuntu机通过网线给其他电脑上网的方法

    首先 xff0c 将ubunt通过无线连上网 用网线将两者连接起来 xff0c 打开ubuntu的有线连接 另一台电脑连接 二者网络地址
  • Pip离线打包与安装

    pip导出与安装 步骤一 xff1a 打包已安装的依赖包 pip freeze gt requirements txt 生成已安装包清单 如本地保留了之前下载的各依赖包 xff0c 直接将各whl tar zip包保存到某个文件夹下 xff
  • Proxmox VE常见问题以及解决办法(持续更新)

    虚拟机出现问题状态为unkonw的解决方法 解决方法 service rrdcached stop rm rf var lib rrdcached service rrdcached start 原帖链接
  • error MSB8020: The build tools for Visual Studio 2010 (Platform Toolset = 'v100') cannot be found

    错误提醒 错误 1 error MSB8020 The build tools for Visual Studio 2010 Platform Toolset 61 v100 cannot be found To build using t
  • 头文件循环引用验证:#pragma once和#ifndef

    在一个项目中 xff0c 如果两次 xff03 include aaa h xff08 比如bbb h包含了aaa h xff0c 而ccc h即包含bbb h又包含aaa h xff09 就会出错 xff0c 因为相同的类不能定义两次 把
  • 证明,若gcd(n,i) == 1,那么gcd(n,n-i)==1

    证明 xff0c 若gcd n i 61 61 1 那么gcd n n i 61 61 1 解 xff1a 设gcd n i 61 61 1 gcd n n i 61 61 k 61 1 那么n与 n i 的最大公约数为k n k 61 6
  • java 两数组交集/差集/补集 多种方式实现记录

    1 明确概念 首先知道几个单词的意思 xff1a 并集 61 union 交集 61 intersection 补集 61 complement 析取 61 disjunction 减去 61 subtract 1 1 并集 对于两个给定集
  • Webcodecs 遇到的一些坑

    Webcodecs 遇到的一些坑 背景 xff1a 由于需要在web端做一款音视频剪辑软件 xff0c 目前已经做到了软变软解 xff0c 准备介入硬件webcodec解码的时候 xff0c 遇到了一些问题 xff0c 现在把问题整理如下
  • QT添加右键菜单(一):使用QMenu进行实现。

    目录 前言 1 先看效果图 1 要实现弹出菜单栏 xff0c 主要有三步 xff1a 2 Demo具体实现过程如下 xff1a 3 总结 xff1a 前言 实现一个右键菜单 xff0c 使用QMenu进行实现 xff0c 效果图如下 xff

随机推荐

  • from origin ‘null‘ has been blocked by CORS policy: Request header field token is not allowed by Acc

    from origin null has been blocked by CORS policy Request header field token is not allowed by Access Control Allow Heade
  • CCF-CSP201809-3 元素选择器

    题目链接 问题描述 试题编号 xff1a 201809 3试题名称 xff1a 元素选择器时间限制 xff1a 1 0s内存限制 xff1a 256 0MB问题描述 xff1a id选择器和标签选择器的查询都比较简单 xff0c 稍微麻烦的
  • KODI播放器连接tfcenter webdav文件服务

    下载并配置tfcenter xff08 1 xff09 下载安装包 xff08 免安装 xff09 v1 5 4及以上版本支持 tfcenter安装包https share weiyun com tFAN6x5p xff08 2 xff09
  • 汇编语言(按键控制蜂鸣器实验)

    汇编语言 xff08 按键控制蜂鸣器实验 xff09 各位社区的小伙伴们大家好 xff01 这个是本人写的一个基于80C51单片机的汇编语言小实验 xff0c 主要目的是利用开关来控制蜂鸣器发声 xff0c 代码本人亲测有效 xff01 x
  • Ubuntu16.04几分钟自动断网问题

    方法1 1 打开配置文件 etc ppp options sudo vi etc ppp options 2 在options文件中找到以下两行代码 lcp echo failure 4 lcp echo interval 30 3 把lc
  • Windows 未能启动。原因可能是最近更改了硬件或软件。解决此问题的步骤

    最近使用一键安装软件 xff0c 在win7系统上安装win xp系统 镜像由于金山和360软件拦截了 没有及时关闭 金山和360软件 注意 xff1a 启动列表中出现的 U 盘 xff0c 一般情况是以 USB HDD 打头 原因 xff
  • 联想电脑开机报错0190:Critical low-battery error

    报错信息 xff1a 0190 xff1a Critical low battery error ERROR 0190 Critical low battery error意思是 xff1a 0190 xff1a 电池电量极低错误 给电池充
  • zabbix使用ICMP ping监控网络状态

    简介 zabbix为我们提供了多种监控方式 本文所说的ICMP ping正是zabbix内部的Simple check 简单检查 很实用的小功能 可以实时了解主机的网络状态 Zabbix在监控网络的时候需要查看ping包的丢失率和响应时间
  • RDP远程登录 Windows server系统

    使用 RDP 文件登录 Windows 实例 目录 操作场景适用本地操作系统前提条件操作步骤 Windows 系统使用 RDP 登录 Linux 系统使用 RDP 登录 MacOS 系统使用 RDP 登录 操作场景 RDP 是 Remote
  • 解决webassembly pthread 子线程调用主线程js问题

    解决webassembly pthread 子线程调用主线程js问题 背景 xff1a web端项目做了一段时间后 xff0c 我们需求是加载工程是异步的 xff0c 主线程会调用wasm方法 xff0c wasm内部用pthread创建出
  • linux服务器中用U盘或者移动硬盘拷贝数据

    使用fdisk l查看硬盘个数 看到移动硬盘的设备名是 dev sdb 实施步骤 1 xff0c 以root用户登陆 先加载USB模块 modprobe usb storage 用fdisk l 看看U盘的设备 假如U盘是sda1 2 xf
  • win10键盘锁住了怎么解决

    有win10系统用户在使用的时候 xff0c 发现键盘被锁住了 xff0c 导致无法使用 xff0c 经过分析可能是不小心按到了键盘上的锁住键 锁定键盘的快捷键 笔记本电脑 xff1a Fn 43 Numlock 键 第一种方法 xff1a
  • 用Python读取CSV文件的5种方式

    典型的数据集stocks csv xff1a 一个股票的数据集 xff0c 其实就是常见的表格数据 有股票代码 xff0c 价格 xff0c 日期 xff0c 时间 xff0c 价格变动和成交量 这个数据集其实就是一个表格数据 xff0c
  • 多媒体技术选择题

    理论上 USB1 1的最高传输速率为12Mbps USB2 0的最高传输速率为480Mbps 实际上 只要小于理论值的数字就行了 Flash MX 软件 制作网络交互动画的编辑工具 Photoshop软件 是处理图像 图形的工具 电话质量采
  • C++程序设计选择题

    1 1 在哪种派生方式中 xff0c 派生类可以访问基类中的 protected 成员 B A public 和 private B public 和 protected C protected 和 private D 仅 protecte
  • MySQL之 XtraBackup 备份

    MySQL 系列连载之 XtraBackup 备份原理 xff08 1 xff09 导读 在日常的linux运维工作中 xff0c 大数据量备份与还原 xff0c 始终是个难点 关于mysql的备份和恢复 xff0c 比较传统的是用mysq
  • HP服务器硬盘坏了一块,教你如何快速更换

    一 需求描述 客户公司的一台HP DL360p Gen8服务器硬盘坏了 xff0c 为了防止另外一块硬盘也损坏 xff0c 急需去将坏的硬盘进行更换 服务器更换硬盘不同普通电脑更换硬盘 xff0c 需要人工去导数据 xff0c 服务器更换硬
  • win 7 电脑错误676、734、678、651等解决办法

    错误676 734等解决办法 运营商办理的网络接入方式都会提供宽带账号和密码 在使用拨号上网的时候 xff0c 经常会出现各种错误代码导致不能上网 以下是个人理解的处理办法 觉得实用请分享 xff0c 不喜勿喷 xff01 01 错误691
  • 序列检测——有限状态机FSM(附verilog代码)

    题目 xff1a 使用状态机检测 1101 xff0c 串行输入的测试序列为 11101101011010 xff0c 输出信号为valid有效信号 xff0c 检测到时输出高 xff0c 否则为低 xff0c 考虑序列叠加情况 xff0c
  • MFC中的CreateProcess函数的应用

    MFC与CMD信息的传递与返回 HANDLE hRead hWrite SECURITY ATTRIBUTES sa sa nLength 61 sizeof SECURITY ATTRIBUTES sa lpSecurityDescrip