C++ 执行cmd命令 并获取输出

这是参考别人的 ,具体来源忘了,唉,等想起来一定补上出处

头文件
PipeCmd.h

#ifndef _PIPE_CMD_H_
#define _PIPE_CMD_H_#include <Windows.h>// 执行 cmd 命令, 并获取执行结果数据
BOOL PipeCmd(char *pszCmd, char *pszResultBuffer, DWORD dwResultBufferSize);#endif

cpp文件

#include "stdafx.h"
#include "PipeCmd.h"void ShowError(char *pszText)
{char szErr[MAX_PATH] = {0};::wsprintf(szErr, "%s Error[%d]\n", pszText, ::GetLastError());::MessageBox(NULL, szErr, "ERROR", MB_OK);
}// 执行 cmd 命令, 并获取执行结果数据
BOOL PipeCmd(char *pszCmd, char *pszResultBuffer, DWORD dwResultBufferSize)
{HANDLE hReadPipe = NULL;HANDLE hWritePipe = NULL;SECURITY_ATTRIBUTES securityAttributes = {0};BOOL bRet = FALSE;STARTUPINFO si = {0};PROCESS_INFORMATION pi = {0};// 设定管道的安全属性securityAttributes.bInheritHandle = TRUE;securityAttributes.nLength = sizeof(securityAttributes);securityAttributes.lpSecurityDescriptor = NULL;// 创建匿名管道bRet = ::CreatePipe(&hReadPipe, &hWritePipe, &securityAttributes, 0);if (FALSE == bRet){ShowError("CreatePipe");return FALSE;}// 设置新进程参数si.cb = sizeof(si);si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;si.wShowWindow = SW_HIDE;si.hStdError = hWritePipe;si.hStdOutput = hWritePipe;// 创建新进程执行命令, 将执行结果写入匿名管道中bRet = ::CreateProcess(NULL, pszCmd, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi);if (FALSE == bRet){ShowError("CreateProcess");}// 等待命令执行结束::WaitForSingleObject(pi.hThread, INFINITE);::WaitForSingleObject(pi.hProcess, INFINITE);// 从匿名管道中读取结果到输出缓冲区::RtlZeroMemory(pszResultBuffer, dwResultBufferSize);::ReadFile(hReadPipe, pszResultBuffer, dwResultBufferSize, NULL, NULL);// 关闭句柄, 释放内存::CloseHandle(pi.hThread);::CloseHandle(pi.hProcess);::CloseHandle(hWritePipe);::CloseHandle(hReadPipe);return TRUE;
}

使用:

string getVideoInfoParam = appPath.toStdString() + "\\ffmpeg.exe -i \"" + filePath + "\"" ;
//	getVideoInfoParam  是要执行的命令
//  szResultBuffer 命令输出结果存储在这里
char szResultBuffer[2560] = { 0 };
DWORD dwResultBufferSize = 2560;
string videoInfoStr;
// 执行 cmd 命令, 并获取执行结果数据
if (FALSE == PipeCmd(const_cast<char *>(getVideoInfoParam.c_str()), szResultBuffer, dwResultBufferSize)) {//videoInfoStr = szResultBuffer;//QMessageBox::information(NULL, QString::fromLocal8Bit("video info error"), QString::fromStdString(videoInfoStr), QMessageBox::Yes, QMessageBox::Yes);
}
else {videoInfoStr = szResultBuffer;//QMessageBox::information(NULL, QString::fromLocal8Bit("video info"), QString::fromStdString(videoInfoStr), QMessageBox::Yes, QMessageBox::Yes);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/382449.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iterm2 保存阿里云登陆并防止断开连接

commando edit profiles新增一个页面 添加命令 ssh -A -p 22 -o ServerAliveInterval60 rootIP

QString中包含中文的时候, 转为char *

转载自 https://blog.csdn.net/mihang2/article/details/39026865 QString中包含中文的时候&#xff0c; 转为char * void FileEncWidget::QString2ANSI(QString text, char **pOut) {std::wstring wIn text.toStdWString();char *pcstr (char *)malloc(sizeof(char)*(2 * w…

brew安装

官网&#xff1a;http://brew.sh/ 安装软件&#xff1a;brew install 软件名&#xff0c;例&#xff1a;brew install wget搜索软件&#xff1a;brew search 软件名&#xff0c;例&#xff1a;brew search wget卸载软件&#xff1a;brew uninstall 软件名&#xff0c;例&#…

关于异步IO模型的学习

看到两篇不错的文章&#xff0c;转载了&#xff1a; https://www.cnblogs.com/fanzhidongyzby/p/4098546.html https://www.cnblogs.com/aspirant/p/9166944.html

centos 无法连接网络

最小化安装&#xff0c;没有ifconfig默认没法联网 cd /etc/sysconfig/network-scripts/ sudo vi ifcfg-en33 也有可能是其他后缀 找到ONBOOTno service network restart 然后yum install net-tools

C++实现utf8和gbk编码字符串互相转换

不同系统或者服务器之间消息传递经常遇到编码转换问题&#xff0c;这里用C实现了一个轻量的gbk和utf8互相转换&#xff0c;可跨平台使用。&#xff08;重量级的可以用libiconv库&#xff09; 在windows下用<windows.h>头文件里的函数进行多字节和宽字符转换&#xff0c;…

mysql5.7初始密码查看及密码重置

查看初始密码 grep temporary password /var/log/mysqld.logcat /root/.mysql_secret mysql密码找回 密码重置 vi /etc/my.cnf 在[mysqld]下加上 skip-grant-tables&#xff0c;如&#xff1a; [mysqld] datadir/var/lib/mysql socket/var/lib/mysql/mysql.sock skip-g…

Ubuntu Linux系统环境变量配置文件

Ubuntu Linux系统环境变量配置文件&#xff1a; /etc/profile : 在登录时,操作系统定制用户环境时使用的第一个文件 ,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。 /etc /environment : 在登录时操作系统使用的第二个文件, 系统在读取你自己的profi…

Mooc的Python3学习笔记

文章目录一些优秀的博主仅供自己查阅&#xff01;&#xff01;&#xff01;首先是掌握基本语法&#xff01;内置的运算符函数函数模块补充知识点pass函数返回多个值关于默认参数使用的注意事项可变参数的使用方法天天向上代码单元测试异常处理代码单例模式Python 中的 if __nam…

使用supervisord 来守护 nginx进程

supervisord 简介&#xff1a; Supervisord 是用 Python 实现的一款的进程管理工具&#xff0c;supervisord 要求管理的程序是非 daemon 程序&#xff0c;supervisord 会帮你把它转成 daemon 程序&#xff0c;因此如果用 supervisord 来管理进程&#xff0c;进程需要以非daemo…

Mac快捷键和实用技巧

文章目录如何更改应用图标怎么移动Mac状态栏的图标macOS常用快捷键多开QQ如何更改应用图标 https://www.macdu.org/16592.html 怎么移动Mac状态栏的图标 https://www.macdu.org/16683.html macOS常用快捷键 https://www.macdu.org/16607.html 多开QQ https://www.macdu.…

vs2017编译QT with ssl

背景&#xff1a;项目中使用的Qt环境不支持https请求&#xff0c;原因是 源码编译的时候没有链接相应的ssl库文件。需要重新编译qt 第一步 先编译Openssl 1)安装perl&#xff0c;并配置环境变量 下载地址&#xff1a; http://downloads.activestate.com/ActivePerl/releases/5…

go语言实现2048小游戏(完整代码)

文章目录2048逻辑分析完整代码2048逻辑分析 2048小游戏的基本操作是上下左右&#xff0c;每个操作的逻辑都不太一样&#xff01;这个时候&#xff0c;通过数组旋转的方式。将所有操作转换为向上的操作 git地址 https://gitee.com/hodgekou/golang.git package mainimport (&q…

动态二维码免费制作

python3制作二维码 很多网站都可以自定义制作很漂亮的二维码&#xff0c;提供了各种素材&#xff0c;但是输出文件又各种限制&#xff0c;非要买她的会员不可。好吧&#xff01;那我们就自己做一个。&#xff08;大牛的开源项目&#xff09; 最终效果 开源项目网站 git clon…

vs 2017 静态库 动态库 的初步使用

静态库的初步使用 新建 静态库 项目 Lib1 会产生 sln文件与vcproj文件&#xff0c;vcproj是工程文件&#xff0c;sln是解决方案文件 一个解决方案可以有多个工程 在头文件(Lib1.h)写函数声明&#xff0c;在cpp文件定义函数实现 这时候右键点击项目 ->生成, 会产生 Lib1.lib…

C语言贪吃蛇

扩展功能实现 加速减速计分链表实现彩色界面暂停 开源代码 贪吃蛇 动图展示&#xff0c;&#xff08;加载比较慢&#xff09;

C++ 读取windows服务列表 与操作注册表

读取服务列表 https://www.cnblogs.com/Leo-Forest/archive/2013/05/03/3056569.html 操作注册表 https://blog.csdn.net/yanchenyu365/article/details/84840908

Python练手项目

python3学习笔记《目录》 PyCharm和git安装教程 git入门教程 python3学习笔记 Mooc学习Python3笔记 python3字符串处理&#xff0c;高效切片 三国演义人物出场统计 统计哈姆雷特文本中高频词的个数 python3制作动态二维码 python的文件操作 简单的爬虫笔记 爬虫实战项…

windows C++ 通过WMI获取底层信息

参考 可以通过修改参数来获取相应的信息 https://www.cnblogs.com/hjbf/p/10775112.html https://docs.microsoft.com/zh-cn/windows/win32/cimwin32prov/win32-operatingsystem?redirectedfromMSDN

知网毕业论文爬取

知网论文 查找文献的时候每次只显示10页二次检索功能又还没有&#xff08;不知道是不是我没找到&#xff09;。干脆用爬虫把所有和自己论文关键字相关的文献题目都爬取下来&#xff0c;然后自己做一个小的检索表。 开源项目 https://github.com/hodgekou/CNKICrawler.git 配…