VC++.进程遍历1

#include <TlHelp32.h>
#include <vector>
BOOL TraversalProcess1(OUT std::vector<PROCESSENTRY32> &vec)
{
	/************************************************************************/
	/* 
	typedef struct tagPROCESSENTRY32
	{
	DWORD   dwSize;
	DWORD   cntUsage;
	DWORD   th32ProcessID;          // this process
	ULONG_PTR th32DefaultHeapID;
	DWORD   th32ModuleID;           // associated exe
	DWORD   cntThreads;
	DWORD   th32ParentProcessID;    // this process's parent process
	LONG    pcPriClassBase;         // Base priority of process's threads
	DWORD   dwFlags;
	CHAR    szExeFile[MAX_PATH];    // Path 其实是进程名称
	} PROCESSENTRY32;
	*/
	/************************************************************************/
	vec.clear();
	try
	{
		HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
		if (hSnap != INVALID_HANDLE_VALUE)
		{
			PROCESSENTRY32 item;
			item.dwSize = sizeof(item);
			if (Process32First(hSnap, &item))
			{
				do 
				{
					vec.push_back(item);
				} while (Process32Next(hSnap, &item));
			}
			CloseHandle(hSnap);
		}
	}
	catch (...)
	{
		OutputDebugStringA(__FUNCTION__);
		return 0;
	}
	return vec.size() > 0;
}

int main()
{
	std::vector<PROCESSENTRY32> vec;
	std::cout << TraversalProcess1(vec) << endl;
	for each (PROCESSENTRY32 var in vec)
	{
		printf("%d\t", var.th32ProcessID);
		printf("%d\t", var.th32ParentProcessID);
		printf("%S\r\n", var.szExeFile);
	}

    return 0;
}
posted @ 2020-03-10 22:25  N.everever  阅读(213)  评论(0)    收藏  举报