Delphi 如何从DLL中检索导出函数的列表

2023-01-03 10:52:04 作者:admin

本文整理自网络,侵删。

  program Project1;  uses   Forms,   Classes,   SysUtils,   Dialogs,   ImageHlp, // routines to access debug information   Windows;  // by Dmitry Streblechenko 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;  // the following is an example how to use the procedure 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.

相关阅读 >>

Delphi研究之驱动开发篇(六)--利用section与用户模式程序通讯(上)

Delphi取得trichedit的光标当前位置

Delphi linklabel1 用法

Delphi 实现透明窗体

Delphi 同时激活两个窗体

Delphi 设计一个有渐变色的标签

Delphi 获取内网所有ip地址

Delphi sysutils.stringreplace - 替换

Delphi 2009 之 tcategorypanelgroup[3]: color

Delphi 泛型搜索字符串数组

更多相关阅读请进入《Delphi》频道 >>



在线咨询 拨打电话