【MFC】根据进程名结束进程学习
2015-08-29 23:46
267 查看
需要使用的
PROCESSENTRY32结构体
CreateToolhelp32Snapshot() 获取进程快照函数
Process32First()获取第一个进程句柄
Process32Next()获取下一个进程句柄
OpenProcess()打开一个已存在的进程对象,并返回进程的句柄
dwSize:
这个结构的长度,以字节为单位,初始化一个实例以后调用Process32First函数,设置成员的大小sizeof (PROCESSENTRY32).如果你没用PROCESSENTRY32中的成员dwSize初始化,process32First将会失败。
cntUsage:
这个成员已经不再被使用,总是设置为零。
th32ProcessID:
这个就是任务管理器里面的进程的PID。
th32DefaultHeapID:
这个成员已经不再被使用,总是设置为零。
th32ModuleID:
这个成员已经不再被使用,总是设置为零。
cntThreads:
这个成员执行线程开始的进程。
th32ParentProcessID:
父进程的ID
pcPriClassBase:
线程优先权
dwFlags:
这个成员已经不再被使用,总是设置为零。
szExeFile:
进程的可执行文件名称。要获得可执行文件的完整路径,应调用Module32First函数,再检查其返回的MODULEENTRY32结构的szExePath成员。但是,如果被调用进程是一个64位程序,您必须调用QueryFullProcessImageName函数去获取64位进程的可执行文件完整路径名。
函数原型:
HANDLE WINAPI CreateToolhelp32Snapshot(DWORD dwFlags, DWORD th32ProcessID);
参数—dwFlags:
指定快照中包含的系统内容,这个参数能够使用下列数值(常量)中的一个或多个。
TH32CS_INHERIT—————————————声明快照句柄是可继承的。
TH32CS_SNAPALL————————————在快照中包含系统中所有的进程和线程。
TH32CS_SNAPHEAPLIST——————————在快照中包含在th32ProcessID中指定的进程的所有的堆。
TH32CS_SNAPMODULE——————————在快照中包含在th32ProcessID中指定的进程的所有的模块。
TH32CS_SNAPPROCESS——————————在快照中包含系统中所有的进程。
TH32CS_SNAPTHREAD——————————在快照中包含系统中所有的线程。
Const TH32CS_SNAPHEAPLIST = &H1
Const TH32CS_SNAPPROCESS = &H2
Const TH32CS_SNAPTHREAD = &H4
Const TH32CS_SNAPMODULE = &H8
Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD | TH32CS_SNAPMODULE)
Const TH32CS_INHERIT = &H80000000
参数—th32ProcessID:
指定将要快照的进程ID。如果该参数为0表示快照当前进程。该参数只有在设置了TH32CS_SNAPHEAPLIST或者TH32CS_SNAPMODULE后才有效,在其他情况下该参数被忽略,所有的进程都会被快照。
函数原型:
BOOL WINAPI Process32First(HANDLE hSnapshot, LPPROCESSENTRY32 lppe);
参数—hSnapshot:
传递快照句柄
参数—lppe:
传递PROCESSENTRY32结构体指针
函数原型:
BOOLWINAPIProcess32Next(HANDLE hSnapshot, LPPROCESSENTRY32 lppe);
参数—hSnapshot:
传递快照句柄
参数—lppe:
传递PROCESSENTRY32结构体指针
函数原型:
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 专用: ———————允许同步函数使用此句柄.
参数—bInheritHandle:
指定返回的句柄是继承dwProcessId指定的进程
参数—dwProcessId:
指定打开需要打开的进程的PID
未完续待
PROCESSENTRY32结构体
CreateToolhelp32Snapshot() 获取进程快照函数
Process32First()获取第一个进程句柄
Process32Next()获取下一个进程句柄
OpenProcess()打开一个已存在的进程对象,并返回进程的句柄
PROCESSENTRY32结构体:
用来存放快照进程信息的一个结构体。(存放进程信息和调用成员输出进程信息)用来 Process32First指向第一个进程信息,并将进程信息抽取到PROCESSENTRY32中。用Process32Next指向下一条进程信息。typedef struct tagPROCESSENTRY32 { DWORD dwSize; DWORD cntUsage; DWORD th32ProcessID; ULONG_PTR th32DefaultHeapID; DWORD th32ModuleID; DWORD cntThreads; DWORD th32ParentProcessID; LONG pcPriClassBase; DWORD dwFlags; TCHAR szExeFile[MAX_PATH]; } PROCESSENTRY32, *PPROCESSENTRY32;
dwSize:
这个结构的长度,以字节为单位,初始化一个实例以后调用Process32First函数,设置成员的大小sizeof (PROCESSENTRY32).如果你没用PROCESSENTRY32中的成员dwSize初始化,process32First将会失败。
cntUsage:
这个成员已经不再被使用,总是设置为零。
th32ProcessID:
这个就是任务管理器里面的进程的PID。
th32DefaultHeapID:
这个成员已经不再被使用,总是设置为零。
th32ModuleID:
这个成员已经不再被使用,总是设置为零。
cntThreads:
这个成员执行线程开始的进程。
th32ParentProcessID:
父进程的ID
pcPriClassBase:
线程优先权
dwFlags:
这个成员已经不再被使用,总是设置为零。
szExeFile:
进程的可执行文件名称。要获得可执行文件的完整路径,应调用Module32First函数,再检查其返回的MODULEENTRY32结构的szExePath成员。但是,如果被调用进程是一个64位程序,您必须调用QueryFullProcessImageName函数去获取64位进程的可执行文件完整路径名。
CreateToolhelp32Snapshot函数:
CreateToolhelp32Snapshot可以通过获取进程信息为指定的进程、进程使用的堆[HEAP]、模块[MODULE]、线程建立一个快照。函数原型:
HANDLE WINAPI CreateToolhelp32Snapshot(DWORD dwFlags, DWORD th32ProcessID);
参数—dwFlags:
指定快照中包含的系统内容,这个参数能够使用下列数值(常量)中的一个或多个。
TH32CS_INHERIT—————————————声明快照句柄是可继承的。
TH32CS_SNAPALL————————————在快照中包含系统中所有的进程和线程。
TH32CS_SNAPHEAPLIST——————————在快照中包含在th32ProcessID中指定的进程的所有的堆。
TH32CS_SNAPMODULE——————————在快照中包含在th32ProcessID中指定的进程的所有的模块。
TH32CS_SNAPPROCESS——————————在快照中包含系统中所有的进程。
TH32CS_SNAPTHREAD——————————在快照中包含系统中所有的线程。
Const TH32CS_SNAPHEAPLIST = &H1
Const TH32CS_SNAPPROCESS = &H2
Const TH32CS_SNAPTHREAD = &H4
Const TH32CS_SNAPMODULE = &H8
Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD | TH32CS_SNAPMODULE)
Const TH32CS_INHERIT = &H80000000
参数—th32ProcessID:
指定将要快照的进程ID。如果该参数为0表示快照当前进程。该参数只有在设置了TH32CS_SNAPHEAPLIST或者TH32CS_SNAPMODULE后才有效,在其他情况下该参数被忽略,所有的进程都会被快照。
Process32First函数:
process32First 是一个进程获取函数,当我们利用函数CreateToolhelp32Snapshot()获得当前运行进程的快照后,我们可以利用process32First函数来获得第一个进程的句柄.其原型为(用的是vfp)函数原型:
BOOL WINAPI Process32First(HANDLE hSnapshot, LPPROCESSENTRY32 lppe);
参数—hSnapshot:
传递快照句柄
参数—lppe:
传递PROCESSENTRY32结构体指针
Process32Next函数:
Process32Next是一个进程获取函数,当我们利用函数CreateToolhelp32Snapshot()获得当前运行进程的快照后,我们可以利用Process32Next函数来获得下一个进程的句柄。函数原型:
BOOLWINAPIProcess32Next(HANDLE hSnapshot, LPPROCESSENTRY32 lppe);
参数—hSnapshot:
传递快照句柄
参数—lppe:
传递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 专用: ———————允许同步函数使用此句柄.
参数—bInheritHandle:
指定返回的句柄是继承dwProcessId指定的进程
参数—dwProcessId:
指定打开需要打开的进程的PID
未完续待
相关文章推荐
- 注册表的组织结构
- SQLSERVER的非聚集索引结构深度理解
- 调整SQLServer2000运行中数据库结构
- C#基础语法:结构和类区别详解
- 深入c# 类和结构的区别总结详解
- c#结构和类的相关介绍
- C#中结构(struct)的部分初始化和完全初始化实例分析
- C#中类与结构的区别实例分析
- C#枚举类型与结构类型实例解析
- javascript实现表现、结构、行为分离的选项卡效果!
- Visual C++中MFC消息的分类
- MFC中Radio Button的用法详解
- MFC对话框中添加状态栏的方法
- MFC创建右键弹出菜单的方法
- MFC中动态创建控件以及事件响应实现方法
- C++ 关于MFC多线程编程的注意事项
- MFC程序对文件的处理方法
- MFC自定义消息的实现方法
- MFC之ComboBox控件用法实例教程
- MFC绘制不规则窗体的方法