#include <windows.h>
#include <tlhelp32.h>
#include <stdio.h>
#include <iostream.h>
#include <Winbase.h>
#include <fstream.h>
BOOL PrintProcessList( )
{
ofstream io("resut.txt");
/*get all the process snapshot*/
HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);//Includes the process list in the snapshot.
if(INVALID_HANDLE_VALUE == hProcessSnap)
{
io<<"fail to get the process snapshot"<<endl;
return FALSE;
}
/*for process*/
PROCESSENTRY32 ProEntry32;
memset(&ProEntry32, 0, sizeof(ProEntry32));
ProEntry32.dwSize = sizeof(ProEntry32);
/*for dll*/
MODULEENTRY32 getinfodll = {0};
getinfodll.dwSize = sizeof(getinfodll);
/*for thread*/
THREADENTRY32 getinfothread = {0};
getinfothread.dwSize = sizeof(getinfodll);
/*get the first process*/
if(!Process32First(hProcessSnap, &ProEntry32))
{
io<<"»ñÈ¡½ø³ÌÐÅϢʧ°Ü£¡"<<endl;
CloseHandle(hProcessSnap);
return FALSE;
}
do
{
/*show .exe name*/
io<<" "<<ProEntry32.szExeFile<<endl;
/*show this dll info*/
HANDLE pdllhandle = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,ProEntry32.th32ProcessID);
Module32First(pdllhandle,&getinfodll);
do
{
io<<getinfodll.szExePath<<endl;
} while (Module32Next(pdllhandle,&getinfodll));
/*show thread in this process*/
io<<"== threadinfo == "<<endl;
HANDLE pthrdhandle = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD,ProEntry32.th32ProcessID);
Thread32First(pthrdhandle,&getinfothread);
do
{
io<<getinfothread.th32ThreadID<<endl;
} while (Thread32Next(pdllhandle,&getinfothread));
//Thread32First(pthrdhandle,)
//ProEntry32.th32ProcessID
} while(Process32Next(hProcessSnap, &ProEntry32));
CloseHandle( hProcessSnap );
return TRUE;
}
void main( )
{
PrintProcessList();
}
/*
VOID UseTlhelp()
{
int iCount = 0;
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
PROCESSENTRY32 pe = {sizeof(PROCESSENTRY32)};
Process32First(hSnapshot, &pe);
while (Process32Next(hSnapshot, &pe))
{
MODULEENTRY32 me = {sizeof(MODULEENTRY32)};
HANDLE hModuleSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pe.th32ProcessID);
Module32First(hModuleSnapshot, &me);
printf("%s\n", me.szExePath);
CloseHandle(hModuleSnapshot);
++iCount;
}
CloseHandle(hSnapshot);
printf("iCount == %d", iCount);
}
#include <tlhelp32.h>
#include <stdio.h>
#include <iostream.h>
#include <Winbase.h>
#include <fstream.h>
BOOL PrintProcessList( )
{
ofstream io("resut.txt");
/*get all the process snapshot*/
HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);//Includes the process list in the snapshot.
if(INVALID_HANDLE_VALUE == hProcessSnap)
{
io<<"fail to get the process snapshot"<<endl;
return FALSE;
}
/*for process*/
PROCESSENTRY32 ProEntry32;
memset(&ProEntry32, 0, sizeof(ProEntry32));
ProEntry32.dwSize = sizeof(ProEntry32);
/*for dll*/
MODULEENTRY32 getinfodll = {0};
getinfodll.dwSize = sizeof(getinfodll);
/*for thread*/
THREADENTRY32 getinfothread = {0};
getinfothread.dwSize = sizeof(getinfodll);
/*get the first process*/
if(!Process32First(hProcessSnap, &ProEntry32))
{
io<<"»ñÈ¡½ø³ÌÐÅϢʧ°Ü£¡"<<endl;
CloseHandle(hProcessSnap);
return FALSE;
}
do
{
/*show .exe name*/
io<<" "<<ProEntry32.szExeFile<<endl;
/*show this dll info*/
HANDLE pdllhandle = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,ProEntry32.th32ProcessID);
Module32First(pdllhandle,&getinfodll);
do
{
io<<getinfodll.szExePath<<endl;
} while (Module32Next(pdllhandle,&getinfodll));
/*show thread in this process*/
io<<"== threadinfo == "<<endl;
HANDLE pthrdhandle = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD,ProEntry32.th32ProcessID);
Thread32First(pthrdhandle,&getinfothread);
do
{
io<<getinfothread.th32ThreadID<<endl;
} while (Thread32Next(pdllhandle,&getinfothread));
//Thread32First(pthrdhandle,)
//ProEntry32.th32ProcessID
} while(Process32Next(hProcessSnap, &ProEntry32));
CloseHandle( hProcessSnap );
return TRUE;
}
void main( )
{
PrintProcessList();
}
/*
VOID UseTlhelp()
{
int iCount = 0;
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
PROCESSENTRY32 pe = {sizeof(PROCESSENTRY32)};
Process32First(hSnapshot, &pe);
while (Process32Next(hSnapshot, &pe))
{
MODULEENTRY32 me = {sizeof(MODULEENTRY32)};
HANDLE hModuleSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pe.th32ProcessID);
Module32First(hModuleSnapshot, &me);
printf("%s\n", me.szExePath);
CloseHandle(hModuleSnapshot);
++iCount;
}
CloseHandle(hSnapshot);
printf("iCount == %d", iCount);
}
*/
http://www.cnblogs.com/qintangtao/archive/2013/02/26/2933734.html