WINAPI:: CreateProcess()


/*
	*****  CreateProcess()应用实例  *****

	BOOL CreateProcessA(
  LPCSTR                lpApplicationName,
  LPSTR                 lpCommandLine,			要执行的命令行字符串
  LPSECURITY_ATTRIBUTES lpProcessAttributes,
  LPSECURITY_ATTRIBUTES lpThreadAttributes,
  BOOL                  bInheritHandles,		新进程是否从调用进程处继承了句柄。FALSE为不继承,TRUE为继承
  DWORD                 dwCreationFlags,
  LPVOID                lpEnvironment,
  LPCSTR                lpCurrentDirectory,
  LPSTARTUPINFOA        lpStartupInfo,			输入参数,指向一个 STARTUPINFO 结构,该结构里可以设定启动信息,可以设置为 NULL 。
  LPPROCESS_INFORMATION lpProcessInformation	输出参数,指向一个 PROCESS_INFORMATION 结构,返回被创建进程的信息。

);

*/
#include <iostream>
#include<Windows.h>
#include<string.h>

using namespace std;

int main(int argc, char* argv[])
{
	char cWindowsDirectory[MAX_PATH];

	//Lptstr 与wchar_t* 等价(Unicode环境下);
	LPTSTR cWinDir = new TCHAR[MAX_PATH];
//	LPTSTR sWinDir = new TCHAR[300];
//	GetCurrentDirectory(MAX_PATH, sWinDir); //获取操作系统当前路径
	wcscpy(cWinDir, L"C:\\Program Files (x86)\\Tencent\\WeChat\\WeChat.exe");

	STARTUPINFO si;
	PROCESS_INFORMATION pi;

	ZeroMemory(&si, sizeof(si));//结构体初始化;
	ZeroMemory(&pi, sizeof(pi));

	if(CreateProcess(NULL,cWinDir,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi))
	{
		cout << "创建进程成功。。。" << endl;
		
		//下面两行关闭句柄,解除本进程和新进程的关系,不然有可能 不小心调用TerminateProcess函数关掉子进程 
		//closehandle(pi.hprocess);
		//closehandle(pi.hthread);
	}
	else {
		cerr << "创建子进程失败。。。" << endl;
		printf("CreateProcess failed : %d\n", GetLastError());
	}

	Sleep(3000);
	//终止子进程
	TerminateProcess(pi.hProcess, NULL);
	//终止本进程,状态码
	ExitProcess(1001);


	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值