c++ 启动exe(启动别的exe程序)
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程序)的更多相关文章
- 应用程序启动后修改自身EXE文件或自删除EXE文件(附VC++6.0源码)
在CSDN论坛看到这么一个问题:如何为第三方工具加上使用限制次数?问题的答案很简单,重新做一个应用程序,将第三方程序打包进这个应用程序,启动应用程序时可以检查第三方工具的使用次数,检查通过,可运行第三 ...
- 更改开机默认不显示explorer.exe,直接启动自己写的EXE程序方法
原文:更改开机默认不显示explorer.exe,直接启动自己写的EXE程序方法 更改开机默认不显示explorer.exe,直接启动自己写的EXE程序的函数: bool UpdateWinlogon ...
- instsrv.exe srvany.exe启动服务
1.通过注册表注册服务 private static readonly string regpath = @"SYSTEM\CurrentControlSet\Services\Consul ...
- cmd.exe启动参数说明
启动命令解释程序 Cmd.exe 的新范例.如果在不含参数的情况下使用,cmd 将显示操作系统的版本和版权信息. 语法 cmd [{/c | /k}] [/s] [/q] [/d] [{/a | /u ...
- mac mono Fiddler.exe启动失败
mono version 5.4 fiddler version 4.6 启动fiddler:mono Fiddler.exe 启动报错 WARNING: The Carbon driver has ...
- [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 ...
- 【UE4 C++】资源烘焙与UE4Editor.exe启动
资源烘焙 虚幻引擎以内部使用的特定格式存储内容资源,将内容从内部格式转换为特定于平台的格式的过程 称为 烘焙((Cooking) 从编辑器烘焙资源 FIle → Cook Content for Wi ...
- 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 ...
- WIN8,开机启动 需要管理员权限的程序
1. 用WPF开发,需要管理员权限并开机启动,以写注册表的方式实现.仅写注册表只能启动一般权限的程序. 2. 考虑这样实现: 程序以一般权限启动,启动以后申请管理员权限. 实现: App类中重写OnS ...
- Windows启动谷歌浏览器Chrome失败(应用程序无法启动,因为应用程序的并行配置不正确)解决方法
目录 一.系统环境 二.问题描述 三.解决方法 一.系统环境 Windows版本 系统类型 浏览器Chrome版本 Windows 10 专业版 64 位操作系统, 基于 x64 的处理器 版本 10 ...
随机推荐
- 如何将自定义的搜索参数便捷的添加到js方式的bootstrap table的参数中
页面: <div> <form id="exp_form"> 查询参数... <button type="button" oncl ...
- DataGridView样式生成器使用说明
啥都不说先看图 一. 功能介绍 1. winform DataGridView样式代码可视化即时生成,所见即所得 2. 预置DataGridView样式代码方案 预置三 ...
- LINQ 【高级查询】
using (Data0216DataContext con = new Data0216DataContext()) { List<Users> ulist = con.Use ...
- 【Java】HashMap源码分析——基本概念
在JDK1.8后,对HashMap源码进行了更改,引入了红黑树.在这之前,HashMap实际上就是就是数组+链表的结构,由于HashMap是一张哈希表,其会产生哈希冲突,为了解决哈希冲突,HashMa ...
- HTML--SVG基础
一 SVG概述 SVG是Scalable Vector Graphics的缩写,即缩放式矢量图形; 优点: 1.使用编辑器即可编辑图形; 2.基于XML,SVG图形可以被很容易的搜索,脚本化和压缩; ...
- 06:合法 C 标识符
06:合法 C 标识符 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 . C语言标识符要求: 1. 非保留字: 2. 只包含字母.数字及下划线(“_”). 3. ...
- 最新安全狗 apache v4.0 sql注入 bypass
前言 最近没事学习一下 waf 的 bypass , 本文介绍下 bypass 安全狗的笔记.个人感觉 bypass 的总思路(正则匹配型 waf)就是利用各种语法特性来逃避正则(当然要保证语法正确性 ...
- 【Java入门提高篇】Day32 Java容器类详解(十四)ArrayDeque详解
今天来介绍一个不太常见也不太常用的类——ArrayDeque,这是一个很不错的容器类,如果对它还不了解的话,那么就好好看看这篇文章吧. 看完本篇,你将会了解到: 1.ArrayDeque是什么? 2. ...
- genymotion 模拟器内安装软件 the app contains ARM native code and your devices cannot run ARM instructions
问题如图: 解决方法: 下载一个Genymotion-ARM-Translation软件,安装到模拟器中就好了
- Linux中用find命令查找当前文件夹下的.elf文件
find ./ -name "*.elf" 注意:""不能少