Mega Code Archive

 
Categories / Delphi / System
 

List Functions in DLL

Title: List Functions in DLL Question: LIst Functions In DLL Answer: ShellSPY V1.1a is the award winning and powerful monitoring solution that you need! ShellSPY gives you the power to log all keystrokes, windows viewed, applications ran, internet connections made, passwords entered, chat conversations that were made, Monitor all running tasks on your pc Download Now Web Site: Cjpsoftware.com unit listfunctionsindll; interface uses Forms, Classes, SysUtils, Dialogs, ImageHlp, // routines to access debug information Windows; type TForm1 = class(TForm) private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure ListDLLFunctions(DLLName: String; List: TStrings); type chararr = array [0..$FFFFFF] of Char; var H: THandle; I, fc: integer; st: string; arr: Pointer; ImageDebugInformation: PImageDebugInformation; begin List.Clear; DLLName := ExpandFileName(DLLName); if FileExists(DLLName) then begin H := CreateFile(PChar(DLLName), GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if HINVALID_HANDLE_VALUE then try ImageDebugInformation := MapDebugInformation(H, PChar(DLLName), nil, 0); if ImageDebugInformationnil then try arr := ImageDebugInformation^.ExportedNames; fc := 0; for I := 0 to ImageDebugInformation^.ExportedNamesSize - 1 do if chararr(arr^)[I]=#0 then begin st := PChar(@chararr(arr^)[fc]); if Length(st)0 then List.Add(st); if (I0) and (chararr(arr^)[I-1]=#0) then Break; fc := I + 1 end finally UnmapDebugInformation(ImageDebugInformation) end finally CloseHandle(H) end end end; // the following is an example how to use the procedure var List: TStrings; I: integer; S: String; begin List := TStringList.Create; ListDLLFunctions('c:\cjpexplorerv11\expreg.dll', List); showmessage(inttostr(list.count)); S := 'List of functions'; for I := 0 to List.Count - 1 do S := S + #13#10 + List[I]; ShowMessage(S); List.Free end.