进程相关内容

进程的创建:

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函数获取一个退出码

 

posted @ 2017-04-21 13:09  菜鸟也有高飞的时候  阅读(211)  评论(0编辑  收藏  举报