Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
{ **** 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
;
Пример использования:
ifnot
GetImageFunctionList('kernel32.dll', ListBox1.Items) then
raise
Exception.Create('Произошла ошибка');