得到进程 及 用到的dll

#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);
}

*/



http://www.cnblogs.com/qintangtao/archive/2013/02/26/2933734.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值