Merhaba,
Arama sonuçlarında bikaç bişey buldum ama, detaylı bir bilgi yoktu.
Var olan bir dll içindeki fonksiyonları nasıl öğrenebilirim?
Teşekkürler.
Bir dll içindeki fonksiyonları öğrenme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Bir dll içindeki fonksiyonları öğrenme
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned

Ez cüdâyîhâ şikâyet mîküned

Merhaba ,
elimde win9x sistemlerde sorunsuzca çalışıan bir fonksiyon var WinXP de bir kaç küçük değişiklikle çalışır. Kolay gelsin.
elimde win9x sistemlerde sorunsuzca çalışıan bir fonksiyon var WinXP de bir kaç küçük değişiklikle çalışır. Kolay gelsin.
Kod: Tümünü seç
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;
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
Kod: Tümünü seç
Uses
ImageHlp;
procedure ListDLLExports(const FileName: string; List: TStrings);
type
TDWordArray = array [0..$FFFFF] of DWORD;
var
imageinfo: LoadedImage;
pExportDirectory: PImageExportDirectory;
dirsize: Cardinal;
pDummy: PImageSectionHeader;
i: Cardinal;
pNameRVAs: ^TDWordArray;
Name: string;
begin
List.Clear;
if MapAndLoad(PChar(FileName), nil, @imageinfo, True, True) then
begin
try
pExportDirectory := ImageDirectoryEntryToData(imageinfo.MappedAddress,
False, IMAGE_DIRECTORY_ENTRY_EXPORT, dirsize);
if (pExportDirectory <> nil) then
begin
pNameRVAs := ImageRvaToVa(imageinfo.FileHeader, imageinfo.MappedAddress,
DWORD(pExportDirectory^.AddressOfNames), pDummy);
for i := 0 to pExportDirectory^.NumberOfNames - 1 do
begin
Name := PChar(ImageRvaToVa(imageinfo.FileHeader, imageinfo.MappedAddress,
pNameRVAs^[i], pDummy));
List.Add(Name);
end;
end;
finally
UnMapAndLoad(@imageinfo);
end;
end;
end;
Kolay gelsin
Hüseyin BAHADIR
En son hbahadir tarafından 25 Mar 2005 02:40 tarihinde düzenlendi, toplamda 1 kere düzenlendi.