http://blog.csdn.net/sdcxyz/article/details/13631613

1例程

1.1面向过程例程如下:

#include <iostream>
#include<windows.h>
#pragma comment(lib, "Kernel32.lib")
using namespace std;
int main()
{

	STARTUPINFO si; //一些必备参数设置
	memset(&si, 0, sizeof(STARTUPINFO));
	si.cb = sizeof(STARTUPINFO);
	si.dwFlags = STARTF_USESHOWWINDOW;
	si.wShowWindow = SW_SHOW;
	PROCESS_INFORMATION pi; //必备参数设置结束
	//if (!CreateProcess(NULL, "\"C:\\Program Files\\MyApp.exe\"" NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) //8888为命令行参数,ExcuteApp.exe为当前目录下的一个exe文件。
	if (!CreateProcess(NULL, "\"F:\\0tool\\转换器\\FormatFactory\\FormatFactory.exe\"" ,NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) //8888为命令行参数,ExcuteApp.exe为当前目录下的一个exe文件。  

	{
		cout << "Create Fail!" << endl;
		exit(1);
	}
	else
	{
		cout << "Sucess!" << endl;
	}
	return 0;
}

1.2面向对象例程如下:

EXELoal.h

#pragma once
//主函数:
#include<windows.h>
#include "atlstr.h"
//#include "string"
#pragma comment(lib, "Kernel32.lib")  

class EXELoad
{
public:
	EXELoad(CString filename);

	STARTUPINFO si; //一些必备参数设置
	PROCESS_INFORMATION pi; //必备参数设置结束
	CString filename;
};

EXELoal.cpp

//实现文件
#include <iostream>
#include "EXELoal.h"
#pragma comment(lib, "Kernel32.lib")  

EXELoad::EXELoad(CString filename)
{

	memset(&si, 0, sizeof(STARTUPINFO));
	si.cb = sizeof(STARTUPINFO);
	si.dwFlags = STARTF_USESHOWWINDOW;
	si.wShowWindow = SW_SHOW;
	//std::string file(filename.GetBuffer(0));
	if (!CreateProcess(NULL, filename.GetBuffer(0), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) //8888为命令行参数          //CreateProcess(NULL,”\”C:\\Program Files\\MyApp.exe\” -L -S”,…….)        //- L和 - S是MyApp.exe可执行文件的参数。
	{
		std::cout << "模拟器未加载成功" << std::endl;
		exit(1);
	}
}

 主函数调用exe2.cpp

#include "EXELoal.h""
int main()
{
	//CString strfileName("ExcuteApp.exe 8888");、       //CreateProcess(NULL,”\”C:\\Program Files\\MyApp.exe\” -L -S”,…….)        //- L和 - S是MyApp.exe可执行文件的参数。
        // CString strfileName("\"F:\\2Project\\YOLO\\yolo2\\YOLO_RECT3\\darknet-rect1\\build\\darknet\\x64\\darknet-rect1.exe\" detector demo F:/2Project/YOLO/yolo2/3data/TestData/data/voc.data F:/2Project/YOLO/yolo2/3data/TestData/cfg/yolo-voc.cfg F:/2Project/YOLO/yolo2/3data/TestData/weight/yolo-voc.weights");
	CString strfileName("\"F:\\0tool\\转换器\\FormatFactory\\FormatFactory.exe\"");
	EXELoad* ExeLoad = new EXELoad(strfileName);
	return 0;
};

2 原理讲解

c++ 启动exe(启动别的exe程序)的更多相关文章

  1. 应用程序启动后修改自身EXE文件或自删除EXE文件(附VC++6.0源码)

    在CSDN论坛看到这么一个问题:如何为第三方工具加上使用限制次数?问题的答案很简单,重新做一个应用程序,将第三方程序打包进这个应用程序,启动应用程序时可以检查第三方工具的使用次数,检查通过,可运行第三 ...

  2. 更改开机默认不显示explorer.exe,直接启动自己写的EXE程序方法

    原文:更改开机默认不显示explorer.exe,直接启动自己写的EXE程序方法 更改开机默认不显示explorer.exe,直接启动自己写的EXE程序的函数: bool UpdateWinlogon ...

  3. instsrv.exe srvany.exe启动服务

    1.通过注册表注册服务 private static readonly string regpath = @"SYSTEM\CurrentControlSet\Services\Consul ...

  4. cmd.exe启动参数说明

    启动命令解释程序 Cmd.exe 的新范例.如果在不含参数的情况下使用,cmd 将显示操作系统的版本和版权信息. 语法 cmd [{/c | /k}] [/s] [/q] [/d] [{/a | /u ...

  5. mac mono Fiddler.exe启动失败

    mono version 5.4 fiddler version 4.6 启动fiddler:mono Fiddler.exe 启动报错 WARNING: The Carbon driver has ...

  6. [Tomcat]无法使用tomcat6.exe启动服务解决办法, The system cannot find the Registry key for service 'tomcat7'

    重新配置环境变量后,可以使用startup.bat启动服务, 但是无法使用tomcat6.exe启动服务, 错误信息: [2011-03-10 18:51:49] [warn]  The system ...

  7. 【UE4 C++】资源烘焙与UE4Editor.exe启动

    资源烘焙 虚幻引擎以内部使用的特定格式存储内容资源,将内容从内部格式转换为特定于平台的格式的过程 称为 烘焙((Cooking) 从编辑器烘焙资源 FIle → Cook Content for Wi ...

  8. nginx.exe启动错误:bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions)

    启动nginx.ese之后 nginx: [emerg] bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a soc ...

  9. WIN8,开机启动 需要管理员权限的程序

    1. 用WPF开发,需要管理员权限并开机启动,以写注册表的方式实现.仅写注册表只能启动一般权限的程序. 2. 考虑这样实现: 程序以一般权限启动,启动以后申请管理员权限. 实现: App类中重写OnS ...

  10. Windows启动谷歌浏览器Chrome失败(应用程序无法启动,因为应用程序的并行配置不正确)解决方法

    目录 一.系统环境 二.问题描述 三.解决方法 一.系统环境 Windows版本 系统类型 浏览器Chrome版本 Windows 10 专业版 64 位操作系统, 基于 x64 的处理器 版本 10 ...

随机推荐

  1. “未能加载文件或程序集“XXX”或它的某一个依赖项。试图加载格式不正确的程序”问题的解决

    发布到win7 64位旗舰版iis上时,报:“未能加载文件或程序集“BC.Common”或它的某一个依赖项.试图加载格式不正确的程序”. 该DLL的本地复制没有设置为true(在项目引用里找到该引用, ...

  2. HDFS的副本存放策略(全)

    HDFS的副本存放策略   HDFS作为Hadoop中的一个分布式文件系统,而且是专门为它的MapReduce设计,所以HDFS除了必须满足自己作为分布式文件系统的高可靠性外,还必须为MapReduc ...

  3. php下载远程图片到本地

    在使用 PHP 做简单的爬虫的时候,我们经常会遇到需要下载远程图片的需求,所以下面来简单实现这个需求1:使用curl 比如我们有下面这两张图片: $images = [ 'https://img.al ...

  4. 设计模式之命令模式(Command )

    命令模式是我们能够实现发送者和接收者之间的完全解耦,发送者是调用操作的对象,而接收者是接收请求并执行特定操作的对象.通过解耦,发送者无需了解接收者的接口.在这里,请求的含义是需要被执行的命令. 作用 ...

  5. jQuery的DOM操作之设置和获取HTML、文本和值 html()text()val()

    1. html()方法: 此方法类似于JavaScript中的innerHTML属性,可以用来读取或者设置某个元素中的html内容. <html> <head> <met ...

  6. Flask 中的 CBV 与上传文件

    from flask import Flask, views, render_template, request app = Flask(__name__) app.config['DEBUG'] = ...

  7. 【作业一】Android开发环境以及开发前的准备

    对于Android平台的开发工具,我知道的就是Eclipse和Android Studio(后面简称AS).之前在学习JAVA时,渐渐习惯了Eclipse,后来要搭建Android的开发环境时,本来也 ...

  8. Python:dictionary

    # Python3.4 Eclipse+PyDev 打开Eclipse,找到Help菜单栏,进入Install New Software…选项. # 点击work with:输入框的旁边点击Add…, ...

  9. 洛谷P3722 [AH2017/HNOI2017]影魔(线段树)

    题意 题目链接 Sol 题解好神仙啊qwq. 一般看到这种考虑最大值的贡献的题目不难想到单调数据结构 对于本题而言,我们可以预处理出每个位置左边第一个比他大的位置\(l_i\)以及右边第一个比他大的位 ...

  10. 用 JS 写 (轮播图 / 选项卡 / 滑动门)

    页面中经常会用到各式各样的轮播图,今天贺贺为大家介绍一种常用的方法,对于JS我们需要举一反三,一种方法可以对多个轮播样式进行渲染. <head> <meta charset=&quo ...