枚举进程

    xiaoxiao2021-03-25  70

    枚举进程

    通过CreateToolhelp32Snapshot创建快照,遍历之即可得到。

    原型: HANDLE WINAPI CreateToolhelp32Snapshot( DWORD dwFlags, //指定需要返回的快照类型 DWORD th32ProcessID //指定快照要获取的进程,设置为0可获取系统进程列表 );

    dwFlags可以是:

    TH32CS_SNAPALL - 在快照中包含系统中所有的进程和线程。 TH32CS_SNAPHEAPLIST - 在快照中包含在th32ProcessID中指定的进程的所有的堆。 TH32CS_SNAPMODULE - 在快照中包含在th32ProcessID中指定的进程的所有的模块。 TH32CS_SNAPPROCESS - 在快照中包含系统中所有的进程。 TH32CS_SNAPTHREAD - 在快照中包含系统中所有的线程。

    然后使用Process32First、Process32Next遍历获取信息。

    代码: PROCESSENTRY32 pe; auto handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); pe.dwSize = sizeof(PROCESSENTRY32); if (!Process32First(handle, &pe)) return FALSE; DWORD id = 0; CString s; while (TRUE) { pe.dwSize = sizeof(PROCESSENTRY32); if (!Process32Next(handle, &pe)) break; CString ss; ss.Format(_T("name:%s,id:%u\r\n"), pe.szExeFile, pe.th32ProcessID); s += ss; } CloseHandle(handle); AfxMessageBox(s); 效果:

    PROCESSENTRY32 结构中还能获得优先级、计数、父进程等信息。

    转载请注明原文地址: https://ju.6miu.com/read-35966.html

    最新回复(0)