Hab mal schnell eine Funktion gebastelt, die die Funktionen einer DLL als Array oder als String zurückgibt. Das ganze ist nicht ganz bugfrei und ohne Fehlerbehandlung. Außerdem funktioniert es wahrscheinlich nur bei 32Bit DLL's.
Vllt findet es der eine oder andere ganz nützlich, dann könnte ich bestimmt noch ein bischen Zeit opfern um es zu verbessern.
Spoiler anzeigen
#Include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]$DLLFile = FileOpenDialog("Choose DLL file", @SystemDir, "DLL files (*.dll)", 3)
if @error Then Exit
$aNames = _DLLGetFunctionNames($DLLFile)
If @error Then Exit ConsoleWrite($DLLFile & ": Fault " & @error & @CR)
;~ $sNames = _DLLGetFunctionNames($DLLFile, 1)
;~ ConsoleWrite($sNames & @CRLF)
_ArrayDisplay($aNames, StringTrimLeft($DLLFile, StringInStr($DLLFile, "\", 0, -1)))
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func _DLLGetFunctionNames($sFileName, $ParamResult = 0)
;funkey Aug, 12th, 2010
;$ParamOutput: 0 --> Result is array
; 1 --> Result is string
Local $hFile = FileOpen($sFileName, 0)
If $hFile = -1 Then Return SetError(1) ; file error
Local $sFile = FileRead($hFile)
FileClose($hFile)
Local $iStartPos, $iEndPos, $sFunctionNames, $aFunctionNames
Local $DLLName = StringTrimLeft($sFileName, StringInStr($sFileName, "\", 0, -1))
For $i = 1 To 99
$iStartPos = StringInStr($sFile, $DLLName & Chr(0), 0, -$i)
If $iStartPos = 0 Then Return SetError(2) ;search error
$sFunctionNames = StringTrimLeft($sFile, $iStartPos - 2)
$sFunctionNames = StringTrimLeft($sFunctionNames, StringInStr($sFunctionNames, "dll") + 3)
$iEndPos = StringInStr($sFunctionNames, Chr(0) & Chr(0))
$sFunctionNames = StringLeft($sFunctionNames, $iEndPos - 1)
If StringInStr($sFunctionNames, Chr(0) & Chr(0x90)) Then $sFunctionNames = StringLeft($sFunctionNames, StringInStr($sFunctionNames, Chr(0) & Chr(0x90)) - 1)
$aFunctionNames = StringSplit($sFunctionNames, Chr(0), 2)
If UBound($aFunctionNames) > 0 And StringStripWS($aFunctionNames[0], <> "" Then ExitLoop
Next
Switch $ParamResult
Case 0
Return $aFunctionNames
Case 1
Return StringReplace($sFunctionNames, Chr(0), @CRLF)
EndSwitch
EndFunc