1. C++中创建进程的代码示例:

// ProcessDemo.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
// #include<windows.h>
#include <iostream>
using namespace std; int main()
{
STARTUPINFO startupInfo = { 0 };
PROCESS_INFORMATION processInformation = { 0 };
/*打开Word应用程序 C:\\Program Files (x86)\\Microsoft Office\\Office14\\WINWORD.EXE 为程序路径*/
BOOL bSuccess = CreateProcess(TEXT("C:\\Program Files (x86)\\Microsoft Office\\Office14\\WINWORD.EXE"), NULL, NULL, NULL, FALSE, NULL, NULL, NULL, &startupInfo, &processInformation); if (bSuccess)
{
cout << "Process started..." << endl
<< "ProcessID: "
<< processInformation.dwProcessId << endl;
}
else
{
cout << "Can not start process!" << endl
<< "Error code: " << GetLastError();
}
system("pause");
}

2. 参数说明(_STARTUPINFOW 结构体参数),参考链接:http://www.360doc.com/content/14/0514/22/7591436_377668778.shtml

typedef struct _STARTUPINFOW {
DWORD cb; //包含STARTUPINFO结构中的字节数.如果Microsoft将来扩展该结构,它可用作版本控制手段.应用程序必须将cb初始化为sizeof(STARTUPINFO)
LPWSTR lpReserved; //保留。必须初始化为NULL
LPWSTR lpDesktop; //用于标识启动应用程序所在的桌面的名字。如果该桌面存在,新进程便与指定的桌面相关联。
//如果桌面不存在,便创建一个带有默认属性的桌面,并使用为新进程指定的名字。
//如果lpDesktop是NULL(这是最常见的情况), 那么该进程将与当前桌面相关联
LPWSTR lpTitle; //用于设定控制台窗口的名称。如果lpTitle 是NULL,则可执行文件的名字将用作窗口名
DWORD dwX; // 用于设定应用程序窗口在屏幕上应该放置的位置的x 和y 坐标(以像素为单位)
// 只有当子进程用CW_USEDEFAULT作为CreateWindow的x参数来创建它的第一个重叠窗口时,
// 才使用这两个坐标。若是创建控制台窗口的应用程序,这些成员用于指明控制台窗口的左上角
DWORD dwY;
DWORD dwXSize; //用于设定应用程序窗口的宽度和长度(以像素为单位)只有dwYsize
// 当子进程将CW_USEDEFAULT用作 CreateWindow 的 nWidth 参数来创建它的第一个重叠窗口时,才使用这些值。
// 若是创建控制台窗口的应用程序,这些成员将用于指明控制台窗口的宽度
DWORD dwYSize;
DWORD dwXCountChars; //用于设定子应用程序的控制台窗口的宽度和高度(以字符为单位)
DWORD dwYCountChars;
DWORD dwFillAttribute; //用于设定子应用程序的控制台窗口使用的文本和背景颜色
DWORD dwFlags;
WORD wShowWindow; //用于设定如果子应用程序初次调用的ShowWindow 将SW_SHOWDEFAULT 作为
// nCmdShow 参数传递时,该应用程序的第一个重叠窗口应该如何出现。
// 本成员可以是通常用于 ShowWindow 函数的任何一个 SW_* 标识符
WORD cbReserved2; //保留。必须被初始化为0
LPBYTE lpReserved2; //保留。必须被初始化为NULL
HANDLE hStdInput; //用于设定供控制台输入和输出用的缓存的句柄。按照默认设置,hStdInput 用于标识键盘缓存,hStdOutput 和 hStdError 用于标识控制台窗口的缓存
HANDLE hStdOutput;
HANDLE hStdError;
} STARTUPINFO, *LPSTARTUPINFO;

dwFlags 使用标志及含义:

标志                                    含义
STARTF_USESIZE                 使用dwXSize 和dwYSize 成员
STARTF_USESHOWWINDOW              使用wShowWindow 成员
STARTF_USEPOSITION              使用dwX 和dwY 成员
STARTF_USECOUNTCHARS                使用dwXCountChars 和dwYCount Chars 成员
STARTF_USEFILLATTRIBUTE          使用dwFillAttribute 成员
STARTF_USESTDHANDLES              使用hStdInput 、hStdOutput 和hStdError 成员
STARTF_RUN_FULLSCREEN              强制在x86 计算机上运行的控制台应用程序以全屏幕方式启动运行

3. 参数说明(_PROCESS_INFORMATION 结构体)参考链接:https://blog.csdn.net/akof1314/article/details/5471768

typedef struct _PROCESS_INFORMATION {
HANDLE hProcess; //存放每个对象的与进程相关的句柄
HANDLE hThread; //返回的线程句柄。
DWORD dwProcessId; //用来存放进程ID号
DWORD dwThreadId; //用来存放线程ID号
} PROCESS_INFORMATION, *PPROCESS_INFORMATION, *LPPROCESS_INFORMATION;

C++ 创建进程的方法的更多相关文章

  1. UDP代码编写、操作系统发展史、多道技术、进程理论与代码层面创建、进程join方法与进程对象方法

    昨日内容回顾 socket基本使用 # 内置的模块 import socket s = socket.socket() # 默认是TCP协议 也可以切换为UDP协议 s.bind((ip,port)) ...

  2. 创建进程,join方法,进程对象相关属性和方法,僵尸进程和孤儿进程,守护进程,互斥锁

    创建进程 在python中提供了一个multiprocessing模块可以帮助我们使用多进程解决问题.在multiprocessing 模块中有一个类Process. from multiproces ...

  3. 同步与异步、阻塞与非阻塞、创建进程的多种方式、进程间数据隔离、进程的join方法、IPC机制等

    目录 同步与异步 阻塞与非阻塞 综合使用 创建进程的多种方式 进程间数据隔离 进程的join方法 IPC机制 生产者消费者模型 进程对象的多种方法 守护进程 僵尸进程与孤儿进程 多进程数据错乱问题 同 ...

  4. 同步异步、mutiprocessing创建进程process模块及进程对象的多种方法、消息队列Queue

    目录 同步异步 阻塞与非阻塞 综合使用 创建进程的多种方式之multiprocess.process模块 进程间数据隔离 进程的join方法 IPC机制 生产者 消费者模型 进程对象的多种方法 守护进 ...

  5. linux创建进程fork的方法步骤

    fork创建进程 函数原型如下 #include// 必须引入头文件,使用fork函数的时候,必须包含这个头文件,否则,系统找不到fork函数 pid_t fork(void); //void代表没有 ...

  6. Delphi 使用CreateProcess创建进程并弹出进程PID值 (转)

    var  ExeName:PChar;  StartupInfo:TStartupInfo;  ProcessInfo:TProcessInformation;begin  FillChar(Proc ...

  7. android,JNI创建进程,使用fork()

    long add(long x,long y) { pid_t fpid; //fpid表示fork函数返回的值 int count=0; fpid=fork(); if (fpid < 0) ...

  8. Android下结束进程的方法

    转自:http://www.cnblogs.com/crazypebble/archive/2011/04/05/2006213.html 最近在做一个类似与任务管理器的东西,里面有个功能,可以通过这 ...

  9. Windows平台下的session0创建进程的问题与解决办法

    很多博客都有记载如何在session0下创建进程的办法,也就是使用CreateProcessAsUser.但是这个要求服务的进程有SE_INCREASE_QUOTA_NAME和SE_ASSIGNPRI ...

  10. Java中如何创建进程(转)

    在Java中,可以通过两种方式来创建进程,总共涉及到5个主要的类. 第一种方式是通过Runtime.exec()方法来创建一个进程,第二种方法是通过ProcessBuilder的start方法来创建进 ...

随机推荐

  1. JavaScript 页面缓存

    1.前言 由来:默认环境中,当浏览器重复访问一个资源时,为节省资源与性能,浏览器将其缓存,后续的请求不再从服务器下载该资源,而是直接从本地缓存中读取,默认时没有强制缓存的 副作用:当服务器资源更新时, ...

  2. 如何TypeScript中相对优雅地实现类的多继承

    首先,在 js 中还没有真正的多继承.但是在实际工作中经常需要抽离通用模块并按需组成新的业务模块,这就对类的多继承有了实际需求. 举个例子,现在我们有个基础类 Animal : class Anima ...

  3. 分布式系统架构1:共识算法Paxos

    1.背景 今天开始更新分布式的文章,工作几年后还没系统的学习分布式的内容,趁着还有时间学习沉淀的时候多输出些文章 2.为什么需要分布式共识算法 思考:现在你有一份随时变动的数据,需要确保它正确存储在网 ...

  4. 推进国产化安全应用:德承工控机DV-1100+银河麒麟操作系统Kylin V10 安装教程

    银河麒麟操作系统 V10是一款适配国产软硬件平台并深入优化和创新的新一代图形化桌面操作系统,支持国内外多款主流的处理器,飞腾.鲲鹏.海思麒麟.龙芯.申威.海光.兆芯等国产CPU和Intel.AMD等平 ...

  5. 使用 Visual Studio 调试器附加到正在运行的进程

    使用 Visual Studio 调试器附加到正在运行的进程 使用场景 当项目在测试环境上有bug,需要运行代码调试一下,这时就需要在测试环境上安装一个调试工具,然后在本地运行代码,远程链接到测试环境 ...

  6. 数据万象AVIF图片压缩 - 小程序省流量利器

    导语 微信小程序因其便捷的开发环境和天然的微信生态,使得越来越多企业平台通过小程序建立自己的业务.在小程序上使用图片非常广泛,但传统格式图片(如 JPG/PNG)占用空间大,加载速度慢,可能导致昂贵的 ...

  7. Electron 窗体 BrowserWindow

    http://jsrun.net/t/KfkKp https://www.wenjiangs.com/doc/tlsizw1dst https://www.w3cschool.cn/electronm ...

  8. NATS: 请求-响应消息

    请求-回复消息 https://docs.nats.io/nats-concepts/core-nats/reqreply 请求-回复 在分布式系统中,请求-回复是一种常见的模式.发送请求之后,应用程 ...

  9. 【C#】【平时作业】习题-7-继承、抽象与多态

    相关概念 什么是继承 继承定义了如何根据现有类创先新类的过程 任何类都可以从另外一个类继承 一个派生出来的子类具有这个类的所有公共属性和方法 类的继承机制 创建新类所根据的基础类称为基类或父类,新建的 ...

  10. IM开发者的零基础通信技术入门(十三):为什么手机信号差?一文即懂!

    [来源申明]本文引用了微信公众号"网优雇佣军"的<是谁偷走了我家的手机信号?>文章内容.为了更好的内容呈现,下文在引用和收录时内容有改动,转载时请注明原文来源信息,尊重 ...