C/C++项目调用外部exe程序方法

2023-11-07

前言

在开发项目的时候,有的时候需要调用外部exe文件。那么在C/C++里面直接调用exe文件的方法有哪些呢?现在可考虑的方法主要有:

  • 使用system函数
  • 使用execl或者execv函数
  • 使用WinExec函数
  • 使用CreateProcess函数
  • 使用ShellExcecuteEx函数

这里,我们用作测试的exe文件为:sleepXs.exe,此exe会将输入参数(int形)加起来并返回,程序在执行时会休眠X秒,X由用户从外部动态定义。程序源码如下:

#include <windows.h>
#include <iostream>

using namespace std;

int main(int argc, char* argv[]){
    int c=0;
    if(argc>1){
        for(int i=1;i<argc;i++){
            c+=atoi(argv[i]);
        }
    }

    int time;
    cout<<"- - 请输入延时时间(s):"<<endl<<"- - ";
    cin>>time;

    cout<<"- - sleep "<<time<<"s start"<<endl;
    Sleep(time*1000);
    cout<<"- - sleep "<<time<<"s end"<<endl;

    return c;
}

方法一、使用system函数

system()函数的功能是发出一个DOS命令:int system(char *command),调用方式如下:

//1+2+3
int res = system("sleepXs.exe 1 2 3");

休眠时间需要从键盘输入,如果需要避免交互,可以换成如下:

int res = system("sleepXs.exe 1 2 3 < sleepXs_input.txt");

sleepXs_input.txt是我们提前创建好的一个txt文件,里面写好参数(那些需要从键盘输入的),如果有多个参数用空格或换行区分,将它和sleepXs.exe放在同一目录即可。sleepXs.exe和系统源文件放在一起(部署时和callExe.exe放一起),否则需要加入路径。

持续更新中。。。

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

C/C++项目调用外部exe程序方法 的相关文章

  • 让idea自动生成类关系图

    学习了解一些开源的工具源码 有时需要了解到程序入口及项目类之间的关系 Idea工具提供了这个功能 以Jmeter5 1 1源码为例 看下RemoteJMeterEngineImpl类的关系图 操作方法 1 定位到RemoteJMeterEn
  • 窗体的扩展样式GWL_EXSTYLE: 用于SetWindowLong

    SetWindowLong Handle GWL EXSTYLE GetWindowLong Handle GWL EXSTYLE or WS EX TRANSPARENT or WS EX LAYERED WS EX ACCEPTFILE
  • 若依框架主子表数据导出问题

    一 使用若依框架导出主子表数据因为返回的数据中含有子表的集合信息 导致excel表格中多出一行标题 二 在Controller层写入导出的方法 三 这边返回的数据是主表的数据 主表数据的实体类中含有子表的集合信息 四 如果不想要子表信息就把
  • 车载无线控制服务器,车载无线视频监控系统应用整体解决方案

    车载视频监控系统整体描述 前言 现如今社会存在一些不良分子扰乱社会治安 盗窃 抢劫 斗殴 民事纠纷 面对这些突发现象 在公安执法 治安巡逻的过程中 很多时候都要随时把过程记录下来 作为记录 取证 证明等各种用途 这时候车载无线视频监控系统起
  • Passing the Message HDU - 3410(单调栈模板题,简单应用)

    题意 现在有n个人站成一行 告诉你每个人的身高 现在每个人都要找到在他左边 比他矮的人中最高的人的位置 同时也要找到 在他右边比他矮的人中最高的人的位置 注意由于他们是站成一行的 所以他们不能越过比他们高的人去看后面的人 也就是说 他只能看
  • IDEA设置忽略idea文件和iml文件

    1 File gt Settings 2 Editor gt File Types 3 红框那里填上 iml idea
  • C语言中的宏定义

    1 简单宏定义 简单的宏定义有如下格式 define指令 简单的宏 define 标识符替换列表 替换列表是一系列的C语言记号 包括标识符 关键字 数 字符常量 字符串字面量 运算符和标点符号 当预处理器遇到一个宏定义时 会做一个 标识符
  • [Android]从零开始的内核编译

    从零开始的内核编译 本教程将基于小米 10S 的内核源码进行实例 其他型号的手机请自行寻找内核源码 具体内容可以参考我的内核编译项目 手机型号查询 1 获取设备 手机 代号 在安卓设备终端 adb shell 上执行 getprop gre
  • 检测之VOC转COCO

    文章目录 1 获取标注文件及label名与ID对应关系 1 1 获取label2id及标注xml路径 2 xml格式转coco 检测系列相关文章参考如下链接 VOC数据的结构介绍及自定义生成 用labelimg自已标注 VOC标准数据的生成
  • Servlet 作业

    一 填空题 1 Servlet 中使用Session 对象的步骤为 调用HttpServletRequest getSession 的得到Session对象 查看Session对象 在会话中保存数据 2 http 全称是 HyperText
  • Python 计算机视觉(二) —— OpenCV 基础

    目录 1 安装配置 2 OpenCV 基础语法 1 读取图像并显示 2 调整显示窗口大小 3 调整图像尺寸大小 4 图像灰度处理 3 几何图形绘制 1 绘制线段 2 绘制矩形 3 绘制圆形 4 绘制椭圆 5 添加文本 总结 1 安装配置 打
  • ssh遇到port 22:No route to host问题

    ssh遇到这个port 22 No route to host的这个问题其实是比较常见的问题 通常是两个思路 检查防火墙状态 检查ssh状态 这两个方面的解决方案非常常见 无非就是查看这两个 防火墙是否关闭和ssh是否正在运行 大家自行百度
  • SpringCloud 使用sentinel

    一 添加依赖
  • 都2023年了,还有必要学SSH框架吗

    在Web开发中 框架是开发效率和代码质量的保障 SSH框架是指结合了Struts2 Spring和Hibernate3三个开源框架所形成的一种框架 那么 在2023年 我们是否仍然需要学习SSH框架呢 本文将进行探讨 分析SSH框架的优缺点
  • 高中信息技术python知识点_高中信息技术《Python语言》模块试卷

    高中信息技术 Python语言 模块试卷 由会员分享 可在线阅读 更多相关 高中信息技术 Python语言 模块试卷 3页珍藏版 请在人人文库网上搜索 1 区县 姓名 座号 密 封 线 高中信息技术Python语言模块试卷本试卷分为五大题
  • 攻防世界Web:Web_php_wrong_nginx_config

    首先进来是一个登录页面 通过御剑扫描 发现了robots txt 打开发现两个php文件 hint php Hack php是跳转到登录页面 抓包看看Hack php 发现了可疑的点Cookie isLogin 0 不妨修改为1 进入控制中
  • Docker 自动启动和容器自动启动

    一 docker 服务启动启动 开启 docker 自启动 systemctl enable docker service 关闭 docker 自启动 systemctl disable docker service 二 docker 容器
  • C++ 线程局部变量thread_local

    本文转自 https blog csdn net aguoxin article details 103968031 Linux中的线程局部存储 一 本章节转自 https blog csdn net cywosp article deta
  • 北京大学肖臻老师《区块链技术与应用》公开课笔记13——BTC匿名性篇2(零知识证明)

    北京大学肖臻老师 区块链技术与应用 公开课笔记 比特币回顾问答篇 对应肖老师视频 click here 全系列笔记请见 click here About Me 点击进入我的Personal Page 匿名性部分第一节 匿名性分析请见 cli

随机推荐

  • UncaughtExceptionHandler异常处理机制

    解释 UncaughtExceptionHandler类是java1 5里新增的 Thread类里面的一个函数式接口类的 类名意思为 未捕获的异常处理 该类的注释接口意思 接口处理器时调用线程突然终止 由于未捕获到异常 当一个线程要终止由于
  • mysql json字段长度_mysql5.7 新增的json字段类型

    一 我们先创建一个表 准备点数据 CREATE TABLE json test id int 11 unsigned NOT NULL AUTO INCREMENT COMMENT ID json json DEFAULT NULL COM
  • java什么场景使用克隆,Java设计模式----原型模式(克隆模式)

    场景 思考一下 克隆技术是怎么样的过程 JavaScript语言中的 继承怎么实现 那里面也有prototype 原型模式 通过new产生一个对象需要繁琐的数据准备或访问权限 则可以使用原型模式 就是java中的克隆技术 以某个对象为原型
  • Qt 搜索框

    一 前言 用户需要输入文本时 可使用QLineEdit控件进行编辑输入 缺点是样式相对单一 在使用百度搜索输入框时 发觉比较人性化 故采用QLineEdt QPushButton通过css样式实现自定义搜索框控件 包含如下功能 1 可设置占
  • 用 ChatGPT 解锁生成式游戏#StoryGames.AI

    生成式游戏 AI 是一种基于人工智能技术 自动生成游戏故事情节 关卡 角色等内容的游戏 AI ChatGPT 的发展生成式游戏 AI 产生了重要影响 为游戏开发者提供了更加灵活 自由的创作方式 每个人都有机会开发自己的专属游戏 StoryG
  • 调试最长的一帧(第16天)

    终于到达绘制了 先看总体流程阶段 然而 从并行堆栈上看 已经有渲染线程开启了 跟着电子书走 先是介绍 抄一抄 加深印象 osg的场景渲染过程可以简单地分为三个阶段 用户APP阶段 更新用户数据 负责场景对象的运动和管理等 筛选cull阶段
  • 这是基于maven管理的SpringBoot项目的mongodb测试笔记,只测试了最基本的增删改查和一些踩过的坑。

    这是基于maven管理的SpringBoot项目的mongodb测试笔记 只测试了最基本的增删改查和一些踩过的坑 一 项目的依赖配置
  • 小米万兆路由器安装homeassistant并接入homekit教程

    1 做好准备工作 正常运行docker并启动docker命令行 参考参考链接中的b站视频 2 拉取homeassistant docker pull homeassistant home assistant 3 设置homeassistan
  • 浅谈依赖注入

    最近几天在看一本名为Dependency Injection in NET 的书 主要讲了什么是依赖注入 使用依赖注入的优点 以及 NET平台上依赖注入的各种框架和用法 在这本书的开头 讲述了软件工程中的一个重要的理念就是关注分离 Sepa
  • mysql数据库的优缺点

    优点1 通常存储过程 标题有助于提高应用程序的性能 因为当你创建他的时候就已经编译了 只不过是按需编译的 2 存储过程有助于减少应用程序和数据库服务器之间的流量 因为应用程序不必发送多个冗长的SQL语句 而只能发送存储过程的名称和参数 3
  • IDEA卡死解决

    找到IDEA的安装目录bin 修改这个文件 修改为 Xms128m Xmx1024m XX MaxPermSize 250m XX ReservedCodeCacheSize 150m
  • STM32外部中断

    参考正点原子视频 外部中断概述 外部中断是单片机实时地处理外部事件的一种内部机制 当某种外部事件发生时 单片机的中断系统将迫使CPU暂停正在执行的程序 转而去进行中断事件的处理 中断处理完毕后 又返回被中断的程序处 继续执行下去 STM32
  • 大疆无人机的新玩法?Payload SDK 了解一下

    一则小新闻 两个新产品 美国时间 3 月 28 日 大疆在加州门洛帕克的消防局总局低调发布了两款新的产品 一款是此前与 FLIR 合作开发的热成像相机 Zenmuse XT 的升级产品 Zenmuse XT2 另一款则是钟德夫更为关注并且会
  • h5 实现一键复制到粘贴板 兼容iOS

    效果展示 先贴上测试连接 http cdn foundao com zhaosheng copytext 实现原理 采用 document execCommand copy 来实现复制到粘贴板功能 复制必须是选中input框的文字内容 然后
  • JNDI数据源的连接属性

    如果无须HIbernate自己管理数据源 而是直接访问容器管理数据源 Hibernate可使用JNDI Java命名目录接口 数据源的相关配置 下面是连接JNDI数据源的主要配置属性 hibernate connection datasou
  • Java 加减乘除 int、long、float、double四种类型

    在学习了基本数据类型之后 内容如下 计算题 假如今天逛超市花了99 99 请用加减乘除 进行计算得到99 99这个结果 要求 1 4个方法 2 数值随意编写 3 数值要用到int long float double四种类型 4 都是返回值
  • Win10在BIOS中如何启用虚拟化(VT)

    文章目录 1 VT技术简介 2 如何进入BIOS 3 如何在BIOS中开启VT 1 VT技术简介 VT 就是虚拟化技术 Virtualization Technology 的缩写 Intel VT就是指Intel的虚拟化技术 这种技术简单来
  • ThreadLocal使用 --用于保存每个登录用户的信息-userInfo

    有时我们需要知道每个用户的登录信息 一般我们是将登录的用户信息是保存在session范围内 而我们在DAO中要是使用用户的某些信息 比哪录录ID 单位ID之类的信息进行过滤时 需要从从control 层传到 sevice层 再传到DAO层
  • 服务器的tls协议,ssl – Nginx中每台服务器的不同TLS协议

    这似乎是Nginx中的一个错误 我也在https serverfault com a 827794 318927发布了这个答案 它始终只使用第一个服务器块中的ssl protocols指令并忽略任何后续服务器块 在我的情况下 我有许多虚拟服
  • C/C++项目调用外部exe程序方法

    前言 在开发项目的时候 有的时候需要调用外部exe文件 那么在C C 里面直接调用exe文件的方法有哪些呢 现在可考虑的方法主要有 使用system函数 使用execl或者execv函数 使用WinExec函数 使用CreateProces