![]() |
|
كيف تربط برنامجك بملف خارجي؟ - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : كيف تربط برنامجك بملف خارجي؟ (/showthread.php?tid=3211) الصفحات:
1
2
|
كيف تربط برنامجك بملف خارجي؟ - cargem - 21-06-2011 مثال جميل ولكنه لا يعمل على DXE إقتباس :if MapAndLoad(PChar(FileName), nil, @imageinfo, True, True) then بسبب PChar وعند تغيره الى PِAnsiChar لا تعطي اي نتيجة هناك سؤال!! عندما تكون هناك الالاف Methods كيف اجد ضالتي؟ كيف تربط برنامجك بملف خارجي؟ - الزري2 - 21-06-2011 أخي cargem فقط مشغول قليلاً هذه الأيام متى كنت فارغ سأبحث عن كيفية التحويل للدلفي, ولكن لا تتوقع مني الكثير لأنني لا زلت صاحب أسبوعين في الدلفي
كيف تربط برنامجك بملف خارجي؟ - TF6M - 21-06-2011 'عندما تكون هناك الالاف Methods' - أنت ما هدفك ؟ كل الدوال أم دالة أم بلوك أم ...... - ماذا تريد بالظبط أخي ؟ كيف تربط برنامجك بملف خارجي؟ - cargem - 21-06-2011 لقد وجدت اسم الروتين إقتباس :?Calculation@Fproj@@mngty@kوالان كيف ننفذ دالة تحتوي على رموز مثل ؟ و@ لقد حاولت تغير اسم الدالة في قائمة export عن طريق hex workshop ولكن بدون فائدة ما الحل؟ كيف تنفيذ دالة عن طريق indix الدالة؟ كيف تربط برنامجك بملف خارجي؟ - cargem - 21-06-2011 index of procedure=2345 كود : procedure TForm1.Button1Click(Sender: TObject);
Var
dll_Handle: THandle;
?Calculation@Fproj@@mngty@k: procedure(w, n, u: Char);
Begin
dll_Handle := LoadLibrary(PChar(ExtractFilePath(ParamStr(0)) +
'nameofdll.Dll'));
If dll_Handle <> 0 Then
@?Calculation@Fproj@@mngty@k := GetProcAddress(dll_Handle,
'?Calculation@Fproj@@mngty@k');
If @?Calculation@Fproj@@mngty@k <> Nil Then
?Calculation@Fproj@@mngty@k('A', 'B', 'H'); // Else .... .
FreeLibrary(dll_Handle);
// Else ....;
End;كيف تربط برنامجك بملف خارجي؟ - Lam.Abdeldjalil - 21-06-2011 السلام عليكم بالنسبة لـ إقتباس :مثال جميل ولكنه لا يعمل على dxeجرب إقتباس : if mapandload(pansichar(filename), nil, @imageinfo, true, true) thenبالتوفيق كيف تربط برنامجك بملف خارجي؟ - cargem - 22-06-2011 الحل هو كما علمتنا استاذ كود : if mapandload(pansichar(ansistring(filename)), nil, @imageinfo, true,
true) thenكود : name := pansichar(imagervatova(imageinfo.fileheader,
imageinfo.mappedaddress, pnamervas^[i], pdummy));
list.add(name);كيف تربط برنامجك بملف خارجي؟ - cargem - 22-06-2011 كيف نستخرج عنوان Method وننفذه كود : 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, AddressOfFunctions: string;
begin
List.Clear;
(* function MapAndLoad(ImageName, DllPath: LPSTR; LoadedImage: PLoadedImage;
DotDll, ReadOnly: Bool): Bool; stdcall; *)
if MapAndLoad(PAnsiChar(AnsiString(FileName)), nil, @imageinfo, True,
True) then
begin
try
// Form1.Label2.Caption :='Address Of Dll = ' + AnsiString(@imageinfo) ;
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 := PAnsiChar(ImageRvaToVa(imageinfo.FileHeader,
imageinfo.MappedAddress, pNameRVAs^[i], pDummy));
// AddressOfFunctions := PAnsiChar(pExportDirectory^.AddressOfFunctions) ;
List.Add(Name);
end;
end;
finally
UnMapAndLoad(@imageinfo);
end;
end;
end;كيف تربط برنامجك بملف خارجي؟ - cargem - 28-06-2011 لقد حليت المشكلة تحياتي للجميع |