windows编程创建进程 4
程序员文章站
2022-07-05 12:59:22
...
#include<Windows.h>
#include<stdio.h>
//进行子进程对象的创建
BOOL CreateChildProcess(PTCHAR szChildProcessName, PTCHAR szComandLine) {
STARTUPINFO si;//当Windows系统创建进程的时候将会调用该结构体对象
PROCESS_INFORMATION pi;//windows所创建的新进程对象当中的必要信息将存放到该结构体当中
ZeroMemory(&pi, sizeof(pi));//开辟内存空间并进行结构对象的实例化操作,将当前结构体对象所占的内存空间初始化为0
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);//初始化当前结构体对象的大小
//调用createProcess函数创建子进程对象
if (
!CreateProcess
(
szChildProcessName,//所要创建的子进程对象的完整路径和名字
szComandLine,//命令行参数
NULL,//当前子进程不继承父进程的句柄
NULL,//子进程当中的线程对象不继承父进程当中的句柄
FALSE,//不继承句柄
0,//没有创建标志
NULL,//使用父进程的环境变量
NULL,//使用父进程的目录做伟大昂前目录,也可以自己设置目录
&si,//StartupInfo结构体当中的详细信息,在该结构体对象当中定义了所创建的新进程对象的窗体显示的具体属性
&pi)//Process_Information 结构体对象当中的信息
)
{
//表明调用Create Process函数对象进行进程对象的创建失败,进行进程对象创建失败信息的打印输出
printf("CreateChildProcess Error:%d \n", GetLastError());
return FALSE;
}
//释放句柄
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
PSTR lpCmdLine,
int nCmdShow
) {
TCHAR szApplicationName[] = TEXT("C://Users//admin//AppData//Local//Google//Chrome//Application//chrome.exe");//要调用的程序的路径和名字
TCHAR szCmdline[] = TEXT("https://www.baidu.com/");
CreateChildProcess(szApplicationName,NULL);
return 0;
}
创建一个进程对象来调用谷歌浏览器对象