Jump to content
Sign in to follow this  
funkey

List function names from DLL file

Recommended Posts

funkey

Here is my new little function called _DLLGetFunctionNames. It extracts the dll function names from dll files.

It's not perfect, but it works good.

I hope you like it.

Greetings from Austria!

#Include <Array.au3>

$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)))


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], 8) <> "" Then ExitLoop
  Next
Switch $ParamResult
  Case 0
   Return $aFunctionNames
  Case 1
   Return StringReplace($sFunctionNames, Chr(0), @CRLF)
EndSwitch
EndFunc
  • Like 1

Programming today is a race between software engineers striving to
build bigger and better idiot-proof programs, and the Universe
trying to produce bigger and better idiots.
So far, the Universe is winning.

Share this post


Link to post
Share on other sites
Ascend4nt

Interesting approach. If you want to get the list the right way though (and with more info), check out my UDF: File + Process Imports/Exports Information

Share this post


Link to post
Share on other sites
dmob

Wow, great function. Will be useful.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.