windows核心编程之进程(4)

来源:互联网 发布:oracle和mysql哪个好 编辑:程序博客网 时间:2024/05/17 06:21

进程的退出,前面已经描述过进程退出的最好办法是让进程从入口点函数返回
还有两个进程退出的函数
ExitProcess,TerminateProcess这两个函数都会导致程序退出时系统资源无法释放,比如c++对象之类的,但是ExitProcess只能使本进程退出,TerminateProcess不仅可以使本进程退出,还可使别的进程退出,只要你有这个进程的句柄
枚举进程:

#include "stdafx.h"#include <Windows.h>#include <Psapi.h>#include <TlHelp32.h>#include <iostream>#include <stdlib.h>#pragma comment(lib,"Psapi.lib")using namespace std;int _tmain(int argc, _TCHAR* argv[]){    bool bRet = false;    HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);//由于系统进程变化非常快,这个函数相当于给系统拍张照片,有了照片咱就可以慢慢看了    if (INVALID_HANDLE_VALUE == hSnap)        cout << "创建系统进程快照失败" << endl;    PROCESSENTRY32 info = { 0 };    info.dwSize = sizeof(PROCESSENTRY32);    bRet = Process32First(hSnap, &info);//查找第一个进程    while (bRet)    {    #ifdef _UNICODE        wcout <<info.szExeFile << endl;    #else        cout << info.szExeFile << endl;    #endif        bRet = Process32Next(hSnap, &info);//查找下一个进程    }    CloseHandle(hSnap);    system("pause");    return 0;}

这里写图片描述
OK,顺利得到进程列表

原创粉丝点击