Windows with Delphi Windows API (94) Windows Filesystem (41) Windows Forms (69) Windows Graphics (38)
Exchange Links About this site Links to us 
|
Retrieve list of exported functions from a DLL
7 comments. Current rating: (4 votes). Leave comments and/ or rate it.
To retrieve the list of exported functions from a DLL, pass the DLL name and a TStrings object to the function ListDLLFunctions() shown below.
This does not show the parameters for each export, which you can only get from the author of the DLL.
 | |  | | program Project1;
uses
Forms,
Classes,
SysUtils,
Dialogs,
ImageHlp, Windows;
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 H<>INVALID_HANDLE_VALUE then
try
ImageDebugInformation := MapDebugInformation(H, PChar(DLLName), nil, 0);
if ImageDebugInformation<>nil 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 (I>0) and (chararr(arr^)[I-1]=#0) then
Break;
fc := I + 1
end
finally
UnmapDebugInformation(ImageDebugInformation)
end
finally
CloseHandle(H)
end
end
end;
var
List: TStrings;
I: integer;
S: String;
begin
List := TStringList.Create;
ListDLLFunctions('c:\winnt\system32\mfc42.dll', List);
S := 'List of functions';
for I := 0 to List.Count - 1 do
S := S + #13#10 + List[I];
ShowMessage(S);
List.Free
end. | |  | |  |
Comments:
|
|
|
|
Unfortnatly It doesn't work...... The result shows 'List of Functions' but nothing else...
|
|
|
|
|
To see why this doesn't work, and to get code that does, search for this in Google Groups:
'peter below' 'How to extract exported function names from .DLL'
- Ron Schuster
|
|
|
|
|
thanks
|
|
|
|
|
Not working....actually what is the problem . Just appear 'List of functions'
|
|
|
|
|
This code isn't working with XP (anymore?)
regards
|
|
|
|
|
Hi,
Used this code and created sample applicaiton. This code doesnot return any funciton names from a DLL.
The statement 'arr := ImageDebugInformation^.ExportedNames;' returns nil, so can not see the exported functions from DLL.
|
|
|
|
|
Hi,
Used this code and created sample applicaiton. This code doesnot return any funciton names from a DLL.
The statement 'arr := ImageDebugInformation^.ExportedNames;' returns nil, so can not see the exported functions from DLL.
|
|