Архив исходников программ, модулей и компонентов на Delphi


Начальная страница

Поиск по базе



Операционная система
Настройка приложения
Взаимодействия приложений
Файлы и директории
Строки и символы
Математика
Базы данных
Интернет и сеть
Мультимедиа
Аппаратная часть
VCL
Другие разделы [0]
 

Количество записей в базе - 537
Сегодня добавлено – 0

Динамические библиотеки



Вернуться к списку функций
 Получение списка экспорта dll

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

 Зависимости:
Windows, ImageHlp

 Ограничения:
Не поддерживается в WinNT 3.5

 Исходный текст:
{ **** UBPFD *********** by http://kladovka.net.ru/delphibase/ ****
>> Получение списка экспорта 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('Произошла ошибка');


Вернуться к списку функций

Наверх ▲