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

نسخة كاملة : كيف يمكن استخراج functions List مع المعرفات (parameters)
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم
مثال لاستخراج functions List من dlls
كيف يمكن استخراج functions List مع المعرفات (parameters)

[صورة: picture0001i.png]


مثلا هذا التعريف
كود :
DWORD GetNamedSecurityInfo( LPTSTR pObjectName, // name of the object SE_OBJECT_TYPE ObjectType, // type of object SECURITY_INFORMATION SecurityInfo, // type of security information to retrieve PSID *ppsidOwner, // receives a pointer to the owner SID PSID *ppsidGroup, // receives a pointer to the primary group SID PACL *ppDacl, // receives a pointer to the DACL PACL *ppSacl, // receives a pointer to the SACL PSECURITY_DESCRIPTOR *ppSecurityDescriptor // receives a pointer to the security descriptor );

وليس فقط GetNamedSecurityInfo
كي اعمل برنامج يحول التعريف من لغة السي ++ الى الدلفي

لكن اين نجد كل المعرفات وما يقابلها بالدلفي
[صورة: cdelphi.png]

ان استخراج الدوال والتوابع مع معرفاتها سيكون دو فائدة رائعة في المستقبل
بحيث تكون كل Windows API معرفة بالدلفي

اتمنى لكم كل التوفيق
تحياتي

وعليكم السلام ورحمة الله

تقصد استخراج تعاريف دوال مكتبة DLL
ان كان كذلك فهو غير ممكن دون تنقيح!

بالنسبة للتحويل من c/c++الى pascal/delphi تحتاج لمعرفة اللغتين على الأقل الاساس
شكرا ولكن اين اجد بقية المعرفات وما يقابلها ب الدلفي
التحويل بسيط جدا ولا يحتاج للتعمق باللغة
المهم هو المعرفات

إقتباس : اين اجد بقية المعرفات
غالبا من عند صاحبها
في حالة جهاز او شيئ ما تجدها ضمن الSDK الذي معه وغالبا تكون بلغة السي/c++

بالنسبة للتحويل يمكن الاستفادة من اداة Dr.Bob's HeadConv
كود :
http://www.drbob42.com/headconv/ http://www.drbob42.com/delphi/headconv.htm
طبعا لتستخدمها تحتاج لملف .h
كود :
غالبا من عند صاحبها
يعني هجوم على السورس كود

كود :
في حالة جهاز او شيئ ما تجدها ضمن الSDK الذي معه وغالبا تكون بلغة السي/c++

نعم اشهر المعرفات الموجودة في c++
كود :
لتستخدمها تحتاج لملف .h
ممكن مثال
انت تقصد .h الوجود في السورس
PHP كود :
C/C++ Type    ObjectPascal Type
unsigned short 
[int]    Word
[signed] short [int]    SmallInt
unsigned 
[int]    Cardinal { 3.25 fix }
[
signed] int    Integer
UINT    LongInt 
{ or Cardinal }
WORD    Word
DWORD    LongInt 
{ or Cardinal }
unsigned long    LongInt { or Cardinal }
unsigned long int    LongInt { or Cardinal }
[
signed] long    LongInt
[signed] long int    LongInt
char    Char
signed char    ShortInt
unsigned char    Byte
char
*    PChar
LPSTR 
or PSTR    PChar
LPWSTR 
or PWSTR    PWideChar { 3.12 fix }
void*    Pointer
BOOL    Bool
float    Single
double    Double
long double    Extended
    
LP
,NP,PP,P prefix: if first = T then T becomes P else P prefix
    
HANDLE    THandle
FARPROC    TFarProc
ATOM    TAtom
TPOINT    TPoint
TRECT    TRect
COLORREF    TColorRef
OFSTRUCT    TOFStruct
DEBUGHOOKINFO    TDebugHookInfo
BITMAP    TBitMap
RGBTRIPLE    TRGBTriple
RGBQUAD    TRGBQuad
BITMAPCOREHEADER    TBitmapCoreHeader
BITMAPINFOHEADER    TBitmapInfoHeader
BITMAPINFO    TBitmapInfo
BITMAPCOREINFO    TBitmapCoreInfo
BITMAPFILEHEADER    TBitmapFileHeader
HANDLETABLE    THandleTable
METARECORD    TMetaRecord
METAHEADER    TMetaHeader
METAFILEPICT    TMetaFilePict
TEXTMETRIC    TTextMetric
NEWTEXTMETRIC    TNewTextMetric
LOGBRUSH    TLogBrush
LOGPEN    TLogPen
PATTERN    TPattern 
{ TLogBrush }
PALETTEENTRY    TPaletteEntry
LOGPALETTE    TLogPalette
LOGFONT    TLogFont
ENUMLOGFONT    TEnumLogFont
PANOSE    TPanose
KERNINGPAIR    TKerningPair
OUTLINETEXTMETRIC    TOutlineTextMetric
FIXED    TFixed
MAT2    TMat2
GLYPHMETRICS    TGlyphMetrics
POINTFX    TPointFX
TTPOLYCURVE    TTTPolyCurve
TTPOLYGONHEADER    TPolygonHeader
ABC    TABC
RASTERIZER_STATUS    TRasterizer_Status
MOUSEHOOKSTRUCT    TMouseHookStruct
CBTACTIVATESTRUCT    TCBTActivateStruct
HARDWAREHOOKSTRUCT    THardwareHookStruct
EVENTMSG    TEventMsg
WNDCLASS    TWndClass
MSG    TMsg
MINMAXINFO    TMinMaxInfo
SEGINFO    TSegInfo
ACCEL    TAccel
PAINTSTRUCT    TPaintStruct
CREATESTRUCT    TCreateStruct
CBT_CREATEWND    TCBT_CreateWnd
MEASUREITEMSTRUCT    TMeasureItemStruct
DRAWITEMSTRUCT    TDrawItemStruct
DELETEITEMSTRUCT    TDeleteItemStruct
COMPAREITEMSTRUCT    TCompareItemStruct
WINDOWPOS    TWindowPos
WINDOWPLACEMENT    TWindowPlacement
NCCALCSIZE_PARAMS    TNCCalcSize_Params
SIZE    TSize
MENUITEMTEMPLATEHEADER    TMenuItemTemplateHeader
MENUITEMTEMPLATE    TMenuItemTemplate
DCB    TDCB
COMSTAT    TComStat
MDICREATESTRUCT    TMDICreateStruct
CLIENTCREATESTRUCT    TClientCreateStruct
MULTIKEYHELP    TMultiKeyHelp
HELPWININFO    THelpWinInfo
CTLSTYLE    TCtlStyle
CTLtype    TCtltype
CTLINFO    TCtlInfo
DDEADVISE    TDDEAdvise
DDEDATA    TDDEData
DDEPOKE    TDDEPoke
DDEAACK    TDDEAck
DEVMODE    TDevMode
KANJISTRUCT    TKanjiStruct 
الكل وليس البعض
file.h
إقتباس : bool closeNT();
void close();
bool truncateNT();
void truncate();

file.pas
إقتباس :var
closeNT: function: Bool cdecl {$IFDEF WIN32} stdcall {$ENDIF};
var
close: procedure cdecl {$IFDEF WIN32} stdcall {$ENDIF};
var
truncateNT: function: Bool cdecl {$IFDEF WIN32} stdcall {$ENDIF};
var
truncate: procedure cdecl {$IFDEF WIN32} stdcall {$ENDIF};

هذا خطا
ايضا class
كود :
class VDFileStream : public VDFile, public IVDRandomAccessStream { private: VDFileStream(const VDFile&); const VDFileStream& operator=(const VDFileStream& f); public: VDFileStream() {} VDFileStream(const char *pszFileName, uint32 flags = nsVDFile::kRead | nsVDFile::kDenyWrite | nsVDFile::kOpenExisting) : VDFile(pszFileName, flags) {} VDFileStream(const wchar_t *pwszFileName, uint32 flags = nsVDFile::kRead | nsVDFile::kDenyWrite | nsVDFile::kOpenExisting) : VDFile(pwszFileName, flags) {} VDFileStream(VDFileHandle h) : VDFile(h) {} ~VDFileStream(); const wchar_t *GetNameForError(); sint64 Pos(); void Read(void *buffer, sint32 bytes); sint32 ReadData(void *buffer, sint32 bytes); void Write(const void *buffer, sint32 bytes); sint64 Length(); void Seek(sint64 offset); };

كود :
var VDFileStream: function(const _1: VDFILE&): PRIVATE: cdecl {$IFDEF WIN32} stdcall {$ENDIF}; var operator=: function(const f: VDFILESTREAM&): CONST cdecl {$IFDEF WIN32} stdcall {$ENDIF}; var VDFileStream: var function: UBLIC: cdecl {$IFDEF WIN32} stdcall {$ENDIF}; var VDFileStream: function(const pszFileName: PChar; VDFile(pszFileName: UINT32 FLAGS = NSVDFILE::KREAD | NSVDFILE::KDENYWRITE | NSVDFILE::KOPENEXISTING) :; _3: FLAGS): Integer cdecl {$IFDEF WIN32} stdcall {$ENDIF}; var VDFileStream: function(const pwszFileName: PWCHAR_T; VDFile(pwszFileName: UINT32 FLAGS = NSVDFILE::KREAD | NSVDFILE::KDENYWRITE | NSVDFILE::KOPENEXISTING) :; _3: FLAGS): Integer cdecl {$IFDEF WIN32} stdcall {$ENDIF}; var VDFileStream: function(h: VDFILEHANDLE): Integer cdecl {$IFDEF WIN32} stdcall {$ENDIF}; var ~VDFileStream: function: Integer cdecl {$IFDEF WIN32} stdcall {$ENDIF}; var GetNameForError: var function: CONST WCHAR_T cdecl {$IFDEF WIN32} stdcall {$ENDIF}; var Pos: function: SINT64 cdecl {$IFDEF WIN32} stdcall {$ENDIF}; var Read: procedure(buffer: Pointer; bytes: SINT32) cdecl {$IFDEF WIN32} stdcall {$ENDIF}; var ReadData: function(buffer: Pointer; bytes: SINT32): SINT32 cdecl {$IFDEF WIN32} stdcall {$ENDIF}; var Write: procedure(const buffer: Pointer; bytes: SINT32) cdecl {$IFDEF WIN32} stdcall {$ENDIF}; var Length: function: SINT64 cdecl {$IFDEF WIN32} stdcall {$ENDIF}; var Seek: procedure(offset: SINT64) cdecl {$IFDEF WIN32} stdcall {$ENDIF};
implicit

كود :
function VDFileStream(const _1: VDFILE&): PRIVATE: cdecl {$IFDEF WIN32} stdcall {$ENDIF}; function operator=(const f: VDFILESTREAM&): CONST cdecl {$IFDEF WIN32} stdcall {$ENDIF}; function var VDFileStream: UBLIC: cdecl {$IFDEF WIN32} stdcall {$ENDIF}; function VDFileStream(const pszFileName: PChar; VDFile(pszFileName: UINT32 FLAGS = NSVDFILE::KREAD | NSVDFILE::KDENYWRITE | NSVDFILE::KOPENEXISTING) :; _3: FLAGS): Integer cdecl {$IFDEF WIN32} stdcall {$ENDIF}; function VDFileStream(const pwszFileName: PWCHAR_T; VDFile(pwszFileName: UINT32 FLAGS = NSVDFILE::KREAD | NSVDFILE::KDENYWRITE | NSVDFILE::KOPENEXISTING) :; _3: FLAGS): Integer cdecl {$IFDEF WIN32} stdcall {$ENDIF}; function VDFileStream(h: VDFILEHANDLE): Integer cdecl {$IFDEF WIN32} stdcall {$ENDIF}; function ~VDFileStream: Integer cdecl {$IFDEF WIN32} stdcall {$ENDIF}; function var GetNameForError: CONST WCHAR_T cdecl {$IFDEF WIN32} stdcall {$ENDIF}; function Pos: SINT64 cdecl {$IFDEF WIN32} stdcall {$ENDIF}; procedure Read(buffer: Pointer; bytes: SINT32) cdecl {$IFDEF WIN32} stdcall {$ENDIF}; function ReadData(buffer: Pointer; bytes: SINT32): SINT32 cdecl {$IFDEF WIN32} stdcall {$ENDIF}; procedure Write(const buffer: Pointer; bytes: SINT32) cdecl {$IFDEF WIN32} stdcall {$ENDIF}; function Length: SINT64 cdecl {$IFDEF WIN32} stdcall {$ENDIF}; procedure Seek(offset: SINT64) cdecl {$IFDEF WIN32} stdcall {$ENDIF}; implementation function VDFileStream; external 'X.DLL'; function operator=; external 'X.DLL'; function VDFileStream; external 'X.DLL'; function VDFileStream; external 'X.DLL'; function VDFileStream; external 'X.DLL'; function VDFileStream; external 'X.DLL'; function ~VDFileStream; external 'X.DLL'; function GetNameForError; external 'X.DLL'; function Pos; external 'X.DLL'; procedure Read; external 'X.DLL'; function ReadData; external 'X.DLL'; procedure Write; external 'X.DLL'; function Length; external 'X.DLL'; procedure Seek; external 'X.DLL'; end.