rt

解决方案 »

  1.   

    用Module32First和Module32Next,自己在MSDN里面查一下就可以用了。
      

  2.   

    进程模块是什么东西啊?是不是进程中加载的DLL文件呢?
      

  3.   

    BOOL ListProcessModules( DWORD dwPID )  
    {  
    HANDLE hModuleSnap = INVALID_HANDLE_VALUE;  
    MODULEENTRY32 me32;  // Take a snapshot of all modules in the specified process.  
    hModuleSnap = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, dwPID );  
    if( hModuleSnap == INVALID_HANDLE_VALUE )  
    {  
        printError( "CreateToolhelp32Snapshot (of modules)" );  
        return( FALSE );  
    }  // Set the size of the structure before using it.  
    me32.dwSize = sizeof( MODULEENTRY32 );  // Retrieve information about the first module,  
    // and exit if unsuccessful  
    if( !Module32First( hModuleSnap, &me32 ) )  
    {  
        printError( "Module32First" ); // Show cause of failure  
        CloseHandle( hModuleSnap );     // Must clean up the snapshot object!  
        return( FALSE );  
    }  // Now walk the module list of the process,  
    // and display information about each module  
    do  
    {  
        printf( "\n\n     MODULE NAME:     %s",             me32.szModule );  
        printf( "\n     executable     = %s",             me32.szExePath );  
        printf( "\n     process ID     = 0x%08X",         me32.th32ProcessID );  
        printf( "\n     ref count (g) =     0x%04X",     me32.GlblcntUsage );  
        printf( "\n     ref count (p) =     0x%04X",     me32.ProccntUsage );  
        printf( "\n     base address   = 0x%08X", (DWORD) me32.modBaseAddr );  
        printf( "\n     base size      = %d",             me32.modBaseSize );  } while( Module32Next( hModuleSnap, &me32 ) );  // Do not forget to clean up the snapshot object.  
    CloseHandle( hModuleSnap );  
    return( TRUE );  
    }