进程相关内容
进程的创建:
WinExec函数:
UINT Win Exec(LPCSTR lpCmdLine, UINT uCmdShow);
lpCmdLine:指向一个空结束的字符串,串中包含将要执行的应用程序的命令行(文件名加上可选参数)。
uCmdShow:定义Windows应用程序的窗口如何显示,并为CreateProcess函数提供STARTUPINFO参数的wShowWindow成员的值
ShellExecute函数:
ShellExecute函数原型及参数含义如下:
ShellExecute(
hWnd: HWND; {指定父窗口句柄}
Operation: PChar; {指定动作, 譬如: open、print、edit、explore、find}
FileName: PChar; {指定要打开的文件或程序}
Parameters: PChar; {给要打开的程序指定参数; 如果打开的是文件这里应该是 nil}
Directory: PChar; {缺省目录}
ShowCmd: Integer {打开选项}
): HINST;
ShowCmd 参数可选值:SW_HIDE = 0; {隐藏}
SW_SHOWNORMAL = 1; {用最近的大小和位置显示, 激活}
SW_NORMAL = 1; {同 SW_SHOWNORMAL}
SW_SHOWMINIMIZED = 2; {最小化, 激活}
SW_SHOWMAXIMIZED = 3; {最大化, 激活}
SW_MAXIMIZE = 3; {同 SW_SHOWMAXIMIZED}
SW_SHOWNOACTIVATE = 4; {用最近的大小和位置显示, 不激活}
SW_SHOW = 5; {同 SW_SHOWNORMAL}
SW_MINIMIZE = 6; {最小化, 不激活}
SW_SHOWMINNOACTIVE = 7; {同 SW_MINIMIZE}
SW_SHOWNA = 8; {同 SW_SHOWNOACTIVATE}
SW_RESTORE = 9; {同 SW_SHOWNORMAL}
SW_SHOWDEFAULT = 10; {同 SW_SHOWNORMAL}
SW_MAX = 10; {同 SW_SHOWNORMAL}
CreateProcess函数:创建一个新的进程和它的主线程,这个新进程运行指定的可执行文件。该函数最重要的是最后两个参数STARTUPINFO的结构体和PROCESS_INFORMATION的结构体,该结构保存着进程或者线程的一些消息
//进程快照,使用下面这个函数还要包含头文件#include<TlHelp32.h>
HANDLE hProcessSnap= CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL);
第一个参数的取值:
TH32CS_INHERIT - 声明快照句柄是可继承的。
TH32CS_SNAPALL - 在快照中包含系统中所有的进程和线程。
TH32CS_SNAPHEAPLIST - 在快照中包含在th32ProcessID中指定的进程的所有的堆。
TH32CS_SNAPMODULE - 在快照中包含在th32ProcessID中指定的进程的所有的模块。
TH32CS_SNAPPROCESS - 在快照中包含系统中所有的进程。
TH32CS_SNAPTHREAD - 在快照中包含系统中所有的线程。
第二个参数:一个进程ID号,用来指定要获取哪一个进程的快照,当获取系统进程列表或获取当前进程快照时可以设为0
用Process32First获取第一个进程的信息,返回值为一个BOOL类型说明是否还有其他进程,获取的进程信息放在第二个参数PROCESSENTRY32类型的变量中
Process32Next获取下一个进程的信息,返回值为一个BOOL类型说明是否还有其他进程,获取的进程信息放在第二个参数PROCESSENTRY32类型的变量中
OpenProcess 函数用来打开一个已存在的进程对象,并返回进程的句柄。
HANDLE OpenProcess(
DWORD dwDesiredAccess, //渴望得到的访问权限(标志)
BOOL bInheritHandle, // 是否继承句柄
DWORD dwProcessId// 进程标示符
);
dwDesiredAccess取值:
PROCESS_ALL_ACCESS 给予进程所有可能允许的权限.
PROCESS_DUP_HANDLE允许使用DuplicateHandle函数进行进程句柄的复制操作.
PROCESS_QUERY_INFORMATION允许函数GetExitCodeProcess 或函数GetPriorityClass functions 查询进程的信息时使用该句柄.
PROCESS_SET_INFORMATION允许函数SetPriorityClass使用此句柄进行优先级设置.
PROCESS_TERMINATE允许函数TerminateProcess 使用此句柄关闭进程.
PROCESS_VM_OPERATION 允许函数VirtualProtectEx使用此句柄修改进程的虚拟内存.
PROCESS_VM_READ or PROCESS_VM_WRITE 允许函数访问和写入权限
SYNCHRONIZE Windows NT 专用: 允许同步函数使用此句柄.
TerminateProcess:关闭一个进程,可以用GetExitCodeProcess函数获取一个退出码