كيف تربط برنامجك بملف خارجي؟
#11
مثال جميل ولكنه لا يعمل على DXE
إقتباس :if MapAndLoad(PChar(FileName), nil, @imageinfo, True, True) then

بسبب PChar

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

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

متى كنت فارغ سأبحث عن كيفية التحويل للدلفي, ولكن لا تتوقع مني الكثير لأنني لا زلت صاحب أسبوعين في الدلفي
Smile
الرد
#13
'عندما تكون هناك الالاف Methods'
- أنت ما هدفك ؟ كل الدوال أم دالة أم بلوك أم ......
- ماذا تريد بالظبط أخي ؟
I'M Fly Like A G6

الرد
#14
لقد وجدت اسم الروتين
إقتباس :?Calculation@Fproj@@mngty@k
والان كيف ننفذ دالة تحتوي على رموز مثل ؟ و@
لقد حاولت تغير اسم الدالة في قائمة export
عن طريق hex workshop
ولكن بدون فائدة
ما الحل؟

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

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


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم