创建进程函数C语言 c++创建进程函数( 三 )


含义:系统不为新进程创建CUI窗口,使用该标志可以创建不含窗口的CUI程序 。
dwCreationFlags参数
还用来控制新进程的优先类,优先类用来决定此进程的线程调度的优先级 。如果下面的优先级类标志都没有被指定 , 那么默认的优先类是NORMAL_PRIORITY_CLASS,除非被创建的进程是IDLE_PRIORITY_CLASS 。在这种情况下子进程的默认优先类是IDLE_PRIORITY_CLASS 。
可以选择下面的标志中的一个:
优先级:HIGH_PRIORITY_CLASS
含义:指示这个进程将执行时间临界的任务,所以它必须被立即运行以保证正确 。这个优先级的程序优先于正常优先级或空闲优先级的程序 。一个例子是Windows任务列表 , 为了保证当用户调用时可以立刻响应,放弃了对系统负荷的考虑 。确保在使用高优先级时应该足够谨慎,因为一个高优先级的CPU关联应用程序可以占用几乎全部的CPU可用时间 。
优先级:IDLE_PRIORITY_CLASS
含义:指示这个进程的线程只有在系统空闲时才会运行并且可以被任何高优先级的任务打断 。例如屏幕保护程序 。空闲优先级会被子进程继承 。
优先级:NORMAL_PRIORITY_CLASS
含义:指示这个进程没有特殊的任务调度要求 。
优先级:REALTIME_PRIORITY_CLASS
含义:指示这个进程拥有可用的最高优先级 。一个拥有实时优先级的进程的线程可以打断所有其他进程线程的执行,包括正在执行重要任务的系统进程 。例如,一个执行时间稍长一点的实时进程可能导致磁盘缓存不足或鼠标反映迟钝 。
lpEnvironment
指向一个新进程的环境块 。如果此参数为空,新进程使用调用进程的环境 。
一个环境块存在于一个由以NULL结尾的字符串组成的块中,这个块也是以NULL结尾的 。每个字符串都是name=value的形式 。
因为相等标志被当做分隔符,所以它不能被环境变量当做变量名 。
与其使用应用程序提供的环境块,不如直接把这个参数设为空,系统驱动器上的当前目录信息不会被自动传递给新创建的进程 。对于这个情况的探讨和如何处理,请参见注释一节 。
环境块可以包含Unicode或ANSI字符 。如果lpEnvironment指向的环境块包含Unicode字符,那么dwCreationFlags字段的CREATE_UNICODE_ENⅥRONMENT标志将被设置 。如果块包含ANSI字符 , 该标志将被清空 。
请注意一个ANSI环境块是由两个零字节结束的:一个是字符串的结尾,另一个用来结束这个快 。一个Unicode环境块是由四个零字节结束的:两个代表字符串结束,另两个用来结束块 。
lpCurrentDirectory
指向一个以NULL结尾的字符串,这个字符串用来指定子进程的工作路径 。这个字符串必须是一个包含驱动器名的绝对路径 。如果这个参数为空,新进程将使用与调用进程相同的驱动器和目录 。这个选项是一个需要启动应用程序并指定它们的驱动器和工作目录的外壳程序的主要条件 。
lpStartupInfo
指向一个用于决定新进程的主窗体如何显示的STARTUPINFO结构体 。
lpProcessInformation
指向一个用来接收新进程的识别信息的PROCESS_INFORMATION结构体 。
返回值:
如果函数执行成功,返回非零值 。
如果函数执行失败 , 返回零,可以使用GetLastError函数获得错误的附加信息 。
进程的查看、创建和撤销(C语言)
例程:
#include stdio.h
#include windows.h
#includetlhelp32.h
int showallproc()
{
PROCESSENTRY32 pe32;//用来存储进程信息的结构体
pe32.dwSize=sizeof(pe32);
HANDLE hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//获取进程快照

推荐阅读