[ create a new paste ] login | about

Link: http://codepad.org/O5xYWWNR    [ raw code | fork ]

C++, pasted on Mar 14:
#include <windows.h>
#include <tlhelp32.h>
#include <vector>
#include <iostream>
using namespace std;

int main(void)
{
	HANDLE hSnapshot;
	PROCESSENTRY32 pe32;
	vector<PROCESSENTRY32> plist1, plist2;
	vector<PROCESSENTRY32> newlist, oldlist;
	SIZE_T i, j;
	BOOL bFound;

	plist1.clear();
	hSnapshot = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
	pe32.dwSize = sizeof(pe32);
	if (::Process32First(hSnapshot, &pe32))
	{
		do {
			plist1.push_back(pe32);
		} while(::Process32Next(hSnapshot, &pe32));
	}
	CloseHandle(hSnapshot);

	for(;;)
	{
		plist2 = plist1;

		plist1.clear();
		hSnapshot = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
		pe32.dwSize = sizeof(pe32);
		if (::Process32First(hSnapshot, &pe32))
		{
			do {
				plist1.push_back(pe32);
			} while(::Process32Next(hSnapshot, &pe32));
		}
		CloseHandle(hSnapshot);

		newlist.clear();
		oldlist.clear();

		for(i = 0; i < plist1.size(); i++)
		{
			bFound = FALSE;
			for(j = 0; j < plist2.size(); j++)
			{
				if (plist1[i].th32ProcessID == plist2[j].th32ProcessID)
				{
					bFound = TRUE;
					break;
				}
			}
			if (!bFound)
			{
				newlist.push_back(plist1[i]);
			}
		}
		for(j = 0; j < plist2.size(); j++)
		{
			bFound = FALSE;
			for(i = 0; i < plist1.size(); i++)
			{
				if (plist1[i].th32ProcessID == plist2[j].th32ProcessID)
				{
					bFound = TRUE;
					break;
				}
			}
			if (!bFound)
			{
				oldlist.push_back(plist2[j]);
			}
		}

		if (!oldlist.empty() || !newlist.empty())
		{
			SYSTEMTIME st;
			GetLocalTime(&st);
			printf("%02d:%02d:%02d\n", st.wHour, st.wMinute,
				st.wSecond);
		}
		for(i = 0; i < oldlist.size(); i++)
		{
			printf("OLD: #%08X %s\n", oldlist[i].th32ProcessID,
				oldlist[i].szExeFile);
		}
		for(i = 0; i < newlist.size(); i++)
		{
			printf("NEW: #%08X %s\n", newlist[i].th32ProcessID,
				newlist[i].szExeFile);
		}
	}

	return 0;
}


Create a new paste based on this one


Comments: