Code: Alles auswählen
Structure Function
File.s
Function.s
EndStructure
Global NewList DLL.s()
Global NewList Procs.Function()
Procedure EnumDirectory(adr.s,index.l)
If ExamineDirectory(index,adr,"*.*")
Debug adr
While NextDirectoryEntry(index)
If DirectoryEntryType(index)=#PB_DirectoryEntry_Directory And Left(DirectoryEntryName(index),1)<>"."
EnumDirectory(adr+"\"+DirectoryEntryName(index),index+1)
ElseIf UCase(GetExtensionPart(DirectoryEntryName(index)))="DLL"
AddElement(DLL())
DLL()=adr+"/"+DirectoryEntryName(index)
EndIf
Wend
FinishDirectory(index)
EndIf
EndProcedure
Procedure EnumFunctions()
ForEach DLL()
Debug DLL()
If OpenLibrary(1,DLL())
If ExamineLibraryFunctions(1)
For a=1 To CountLibraryFunctions(1)
AddElement(Procs())
Procs()\file=dll()
NextLibraryFunction()
Procs()\Function=LibraryFunctionName()
Next
EndIf
EndIf
CloseLibrary(1)
Next
EndProcedure
x=GetTickCount_()
EnumDirectory("C:\",0)
EnumFunctions()
MessageRequester("Zeit: ",Str(GetTickCount_()-x))
If OpenWindow(1,200,200,500,500,"Alle Funktionen Zeiger")
CreateGadgetList(WindowID(1))
ListIconGadget(0,0,0,500,500,"Funktion",150)
AddGadgetColumn(0,1,"Adresse",350)
ForEach Procs()
AddGadgetItem(1,-1,procs()\Function+Chr(10)+Procs()\file)
Next
MessageRequester("Menge: ",Str(CountList(Procs())))
Repeat: Until WaitWindowEvent()=#WM_CLOSE
CloseWindow(1)
EndIf
End