Funktionreferenz


_WinAPI_EnumProcessModules


Retrieves a handle and name for each module in the specified process

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

Parameter

$iPID [optional] The PID of the process. Default (0) is the current process.
$iFlag [optional] The filter criteria. This parameter is valid only for Windows Vista or later, and can be one of the following values:
    $LIST_MODULES_32BIT
    $LIST_MODULES_64BIT
    $LIST_MODULES_ALL
    $LIST_MODULES_DEFAULT (Default)
Constants are defined in APIProcConstants.au3

Rückgabewert

Success: The 2D array containing the following information:
    [0][0] - Number of rows in array (n)
    [0][1] - Unused
    [n][0] - Handle to the module.
    [n][1] - The path to the file that contains the module.
Failure: Sets the @error flag to non-zero.

Bemerkungen

This function does not retrieve handles for modules that were loaded with the $LOAD_LIBRARY_AS_DATAFILE flag.
For more information, see _WinAPI_LoadLibraryEx().

Do not call _WinAPI_CloseHandle() on any of the handles returned by this function.
The information comes from a snapshot, so there are no resources to be freed.

If _WinAPI_EnumProcessModules() is called from a 32-bit application running on WOW64, it can only enumerate the modules of a 32-bit process.
If the process is a 64-bit process, this function fails and the last error code is ERROR_PARTIAL_COPY (299).

Siehe auch

Suche nach EnumProcessModulesEx in der MSDN Bibliothek.

Beispiel

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

If (Number(_WinAPI_GetVersion()) < 6.0) And (@AutoItX64) Then
    MsgBox(($MB_ICONERROR + $MB_SYSTEMMODAL), 'Fehler', 'Dieses Beispiel funktioniert bei einem 64-bit System nur in Windows Vista oder neuer.')
    Exit
EndIf

Local $aData = _WinAPI_EnumProcessModules()

_ArrayDisplay($aData, '_WinAPI_EnumProcessModules')