C++创建进程的⽅法
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 << "" << endl
<< "ProcessID: "
<< processInformation.dwProcessId << endl;
}
else
{
cout << "Can not start process!" << endl
<< "Error code: " << GetLastError();
}
system("pause");
}
2. 参数说明(_STARTUPINFOW 结构体参数),参考链接:
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 结构体)参考链接:
typedef struct _PROCESS_INFORMATION {
HANDLE hProcess; //存放每个对象的与进程相关的句柄
HANDLE hThread;        //返回的线程句柄。
startupinfoDWORD dwProcessId;    //⽤来存放进程ID号
DWORD dwThreadId;      //⽤来存放线程ID号
} PROCESS_INFORMATION, *PPROCESS_INFORMATION, *LPPROCESS_INFORMATION;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。