delphi4arab منتديات دلفي للعرب

نسخة كاملة : كيف تربط برنامجك بملف خارجي؟
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
مثال جميل ولكنه لا يعمل على DXE
إقتباس :if MapAndLoad(PChar(FileName), nil, @imageinfo, True, True) then

بسبب PChar

وعند تغيره الى PِAnsiChar
لا تعطي اي نتيجة

هناك سؤال!!
عندما تكون هناك الالاف Methods
كيف اجد ضالتي؟
أخي cargem فقط مشغول قليلاً هذه الأيام

متى كنت فارغ سأبحث عن كيفية التحويل للدلفي, ولكن لا تتوقع مني الكثير لأنني لا زلت صاحب أسبوعين في الدلفي
Smile
'عندما تكون هناك الالاف Methods'
- أنت ما هدفك ؟ كل الدوال أم دالة أم بلوك أم ......
- ماذا تريد بالظبط أخي ؟
لقد وجدت اسم الروتين
إقتباس :?Calculation@Fproj@@mngty@k
والان كيف ننفذ دالة تحتوي على رموز مثل ؟ و@
لقد حاولت تغير اسم الدالة في قائمة export
عن طريق hex workshop
ولكن بدون فائدة
ما الحل؟

كيف تنفيذ دالة عن طريق indix الدالة؟
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;
السلام عليكم

بالنسبة لـ
إقتباس :مثال جميل ولكنه لا يعمل على dxe
اقتباس:
If mapandload(pchar(filename), nil, @imageinfo, true, true) then
بسبب pchar
جرب
إقتباس : if mapandload(pansichar(filename), nil, @imageinfo, true, true) then
بالتوفيق
الحل هو كما علمتنا استاذ
كود :
if mapandload(pansichar(ansistring(filename)), nil, @imageinfo, true, true) then
ثم
كود :
name := pansichar(imagervatova(imageinfo.fileheader, imageinfo.mappedaddress, pnamervas^[i], pdummy)); list.add(name);
انت تريد ان تختبرني هههه
كيف نستخرج عنوان 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;
لقد حليت المشكلة
تحياتي للجميع
الصفحات : 1 2