Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Получение списка экспорта dll

Автор: Mystic
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Получение списка экспорта dll

Функция GetImageFunctionList возвращает список всех экспортируемых функций dll
FileName - имя dll
Strings - объетк, в который будут занесен список экспорта.
ВАЖНО! Тестировано только под NT4

Зависимости: Windows, ImageHlp
Автор:       Mystic, mystic2000@newmail.ru, ICQ:125905046, Харьков
Copyright:   Mystic
Дата:        21 апреля 2002 г.
***************************************************** }

function EnumSymbols(SymbolName: PChar; SymbolAddress, SymbolSize: ULONG;
  Strings: Pointer): Bool; stdcall;
begin
  TStrings(Strings).Add(SymbolName);
  Result := True;
end;

function GetImageFunctionList(const FileName: string; Strings: TStrings):
  Boolean;

var
  Handle: THandle;
  hProcess: THandle;
  VersionInfo: TOSVersionInfo;
begin
  Strings.Clear;
  Result := False;

  SymSetOptions(SYMOPT_UNDNAME or SYMOPT_DEFERRED_LOADS);

  VersionInfo.dwOSVersionInfoSize := SizeOf(VersionInfo);
  if not GetVersionEx(VersionInfo) then
    Exit;

  if VersionInfo.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS then
    hProcess := GetCurrentProcessId
  else
    hProcess := GetCurrentProcess;

  if not SymInitialize(hProcess, nil, True) then
    Exit;
  try
    Handle := LoadLibrary(PChar(FileName));
    if Handle = 0 then
      Exit;
    try
      if not SymLoadModule(hProcess, 0, PChar(FileName), nil, Handle, 0) then
        Exit;
      try
        if not SymEnumerateSymbols(hProcess, Handle, EnumSymbols, Strings) then
          Exit;
      finally
        SymUnloadModule(hProcess, Handle);
      end;
    finally
      FreeLibrary(Handle);
    end;
  finally
    SymCleanup(hProcess);
  end;
  Result := True;
end;

Пример использования:

if not GetImageFunctionList('kernel32.dll', ListBox1.Items) then
  raise Exception.Create('Произошла ошибка');
Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay