UDF > WinAPIEx > Processes & Synchronization > Processes >


_WinAPI_EnumProcessModules

Obtient le handle et le nom de chaque module du processus spécifié

#include <WinAPIProc.au3>
_WinAPI_EnumProcessModules ( [$iPID = 0 [, $iFlag = 0]] )

Paramètres

$iPID [optionnel] Le PID du processus. Par défaut (0) est le processus actuel.
$iFlag [optionnel] Les critères de filtrage. Ce paramètre n'est valable que pour Windows Vista ou une version ultérieure , et peut prendre l'une des valeurs suivantes:
    $LIST_MODULES_32BIT
    $LIST_MODULES_64BIT
    $LIST_MODULES_ALL
    $LIST_MODULES_DEFAULT (par défaut)

Valeur de retour

Succès: Retourne le tableau 2D contenant les informations suivantes:
    [0][0] - Nombre de lignes du tableau (n)
    [0][1] - Inutilisé
    [n][0] - Handle du module.
    [n][1] - Chemin du fichier qui contient le module.
Échec: Définit @error <> 0.

Remarques

Cette fonction ne récupère pas les handles des modules qui ont été chargés avec le flag $LOAD_LIBRARY_AS_DATAFILE.
Pour plus d'informations, consultez _WinAPI_LoadLibraryEx().

N'appelez pas _WinAPI_CloseHandle() sur un handle retourné par cette fonction.
L'information provient d'un instantané, donc il n'y a pas de ressources à libérer.

Si _WinAPI_EnumProcessModules() est appelée à partir d'une application 32 bits s'exécutant sur WOW64, elle peut seulement énumérer les modules d'un processus 32 bits.
Si le processus est un processus 64 bits, cette fonction échoue et le code de la dernière erreur est ERROR_PARTIAL_COPY (299).

Voir aussi

Consultez EnumProcessModulesEx dans la librairie MSDN.

Exemple

#include <Array.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIProc.au3>
#include <WinAPISys.au3>

If (Number(_WinAPI_GetVersion()) < 6.0) And (@AutoItX64) Then
    MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), 'Erreur', 'Cet exemple tourne sous un système  64-bit seulement sous Windows Vista ou une version ultérieure.')
    Exit
EndIf

Local $aData = _WinAPI_EnumProcessModules()

_ArrayDisplay($aData, '_WinAPI_EnumProcessModules')