#include <windows.h>
#include <stdio.h>
struct ProcessType
{
DWORD value[30];
};
void Init(ProcessType &pt)
{
pt.value[0] = DEBUG_PROCESS;
pt.value[1] = DEBUG_ONLY_THIS_PROCESS;
pt.value[2] = CREATE_SUSPENDED;//新建进程的主线程挂起,调用ResumeThread(pis.hThread);激活新进程的主线程
pt.value[3] = DETACHED_PROCESS;
pt.value[4] = CREATE_NEW_CONSOLE;
pt.value[5] = NORMAL_PRIORITY_CLASS;
pt.value[6] = IDLE_PRIORITY_CLASS;
pt.value[7] = HIGH_PRIORITY_CLASS;
pt.value[8] = REALTIME_PRIORITY_CLASS;
pt.value[9] = CREATE_NEW_PROCESS_GROUP;
pt.value[10] = CREATE_UNICODE_ENVIRONMENT;
pt.value[11] = CREATE_SEPARATE_WOW_VDM;
pt.value[12] = CREATE_SHARED_WOW_VDM;
pt.value[13] = CREATE_FORCEDOS;
pt.value[14] = BELOW_NORMAL_PRIORITY_CLASS;
pt.value[15] = ABOVE_NORMAL_PRIORITY_CLASS;
pt.value[16] = INHERIT_PARENT_AFFINITY;
pt.value[17] = INHERIT_CALLER_PRIORITY;
pt.value[18] = CREATE_PROTECTED_PROCESS;
pt.value[19] = EXTENDED_STARTUPINFO_PRESENT;
pt.value[20] = PROCESS_MODE_BACKGROUND_BEGIN;
pt.value[21] = PROCESS_MODE_BACKGROUND_END;
pt.value[22] = CREATE_BREAKAWAY_FROM_JOB;
pt.value[23] = CREATE_PRESERVE_CODE_AUTHZ_LEVEL;
pt.value[24] = CREATE_DEFAULT_ERROR_MODE;
pt.value[25] = CREATE_NO_WINDOW;
pt.value[26] = PROFILE_USER;
pt.value[27] = PROFILE_KERNEL;
pt.value[28] = PROFILE_SERVER;
pt.value[29] = CREATE_IGNORE_SYSTEM_DEFAULT;
}
BOOL CreateChildProcess(LPWSTR lpszExecFile,PROCESS_INFORMATION& proinfo,DWORD TYPE)
{
STARTUPINFO si = {sizeof(si)}; //启动信息
PROCESS_INFORMATION pi ; //返回信息结构体
BOOL bStatus = CreateProcess(lpszExecFile,NULL,NULL,NULL,FALSE,TYPE,NULL,NULL,&si,&pi);//创建进程
if(!bStatus)
{
return FALSE;
}
proinfo = pi;
return TRUE;
}
int main(int argc, char const *argv[])
{
ProcessType PT;
Init(PT);
printf("开始创建进程\n");
PROCESS_INFORMATION pis;//用于保存函数返回值
LPWSTR P(L"C:\\Windows\\system32\\calc.exe");
//创建进程
if(!CreateChildProcess(P,pis,PT.value[2]))
{
printf("创建进程失败!\n");
return -1;
}
printf("创建进程成功!进程句柄为:%d\n",pis.hThread);
printf("按任意键将挂起进程恢复!\n");
system("pause");
//挂起进程恢复
ResumeThread(pis.hThread);
printf("演示完毕!\n");
system("pause");
return 0;
}【语言-C++】C++、C 创建挂起进程
最新推荐文章于 2024-04-08 11:29:24 发布
本文详细介绍了使用C++在Windows环境下初始化进程类型结构,并通过`CreateProcess`函数创建子进程的过程,包括设置进程属性如优先级、创建方式等。
593

被折叠的 条评论
为什么被折叠?



