aecc قام بنشر أبريل 6, 2021 قام بنشر أبريل 6, 2021 (معدل) السادة محترفي الاكسيس الرحاء تعديل كود تعديل كود للتعرف على رقم الهارد وهو كزد قديم نقلته من المنتدى ولكن الكود غير صالح للهاردات الجديدة ارجو تعديل الكود من اهل الخبرة شاكرا اكم جخودكم Hdd Copy.accdb تم تعديل أبريل 6, 2021 بواسطه aecc
aecc قام بنشر أبريل 6, 2021 الكاتب قام بنشر أبريل 6, 2021 Option Compare Database Option Explicit Private Const GENERIC_READ = &H80000000 Private Const GENERIC_WRITE = &H40000000 Private Const FILE_SHARE_READ = &H1 Private Const FILE_SHARE_WRITE = &H2 Private Const OPEN_EXISTING = 3 Private Const CREATE_NEW = 1 Private Const INVALID_HANDLE_VALUE = -1 Private Const VER_PLATFORM_WIN32_NT = 2 Private Const IDENTIFY_BUFFER_SIZE = 512 Private Const OUTPUT_DATA_SIZE = IDENTIFY_BUFFER_SIZE + 16 Private Type GETVERSIONOUTPARAMS bVersion As Byte bRevision As Byte bReserved As Byte bIDEDeviceMap As Byte fCapabilities As Long dwReserved(3) As Long End Type Private Type IDEREGS bFeaturesReg As Byte bSectorCountReg As Byte bSectorNumberReg As Byte bCylLowReg As Byte bCylHighReg As Byte bDriveHeadReg As Byte bCommandReg As Byte bReserved As Byte End Type Private Type SENDCMDINPARAMS cBufferSize As Long irDriveRegs As IDEREGS bDriveNumber As Byte bReserved(2) As Byte dwReserved(3) As Long bBuffer() As Byte End Type Private Const IDE_ID_FUNCTION = &HEC Private Const IDE_EXECUTE_SMART_FUNCTION = &HB0 Private Const SMART_CYL_LOW = &H4F Private Const SMART_CYL_HI = &HC2 Private Type DRIVERSTATUS bDriverError As Byte bIDEStatus As Byte bReserved(1) As Byte dwReserved(1) As Long End Type Private Type IDSECTOR wGenConfig As Integer wNumCyls As Integer wReserved As Integer wNumHeads As Integer wBytesPerTrack As Integer wBytesPerSector As Integer wSectorsPerTrack As Integer wVendorUnique(2) As Integer sSerialNumber(19) As Byte wBufferType As Integer wBufferSize As Integer wECCSize As Integer sFirmwareRev(7) As Byte sModelNumber(39) As Byte wMoreVendorUnique As Integer wDoubleWordIO As Integer wCapabilities As Integer wReserved1 As Integer wPIOTiming As Integer wDMATiming As Integer wBS As Integer wNumCurrentCyls As Integer wNumCurrentHeads As Integer wNumCurrentSectorsPerTrack As Integer ulCurrentSectorCapacity As Long wMultSectorStuff As Integer ulTotalAddressableSectors As Long wSingleWordDMA As Integer wMultiWordDMA As Integer bReserved(127) As Byte End Type Private Type SENDCMDOUTPARAMS cBufferSize As Long DRIVERSTATUS As DRIVERSTATUS bBuffer() As Byte End Type Private Const SMART_ENABLE_SMART_OPERATIONS = &HD8 Public Enum STATUS_FLAGS PRE_FAILURE_WARRANTY = &H1 ON_LINE_COLLECTION = &H2 PERFORMANCE_ATTRIBUTE = &H4 ERROR_RATE_ATTRIBUTE = &H8 EVENT_COUNT_ATTRIBUTE = &H10 SELF_PRESERVING_ATTRIBUTE = &H20 End Enum Private Const DFP_GET_VERSION = &H74080 Private Const DFP_SEND_DRIVE_COMMAND = &H7C084 Private Const DFP_RECEIVE_DRIVE_DATA = &H7C088 Private Type ATTR_DATA AttrID As Byte AttrName As String AttrValue As Byte ThresholdValue As Byte WorstValue As Byte StatusFlags As STATUS_FLAGS End Type Private Type DRIVE_INFO bDriveType As Byte SerialNumber As String Model As String FirmWare As String Cilinders As Long Heads As Long SecPerTrack As Long BytesPerSector As Long BytesperTrack As Long NumAttributes As Byte Attributes() As ATTR_DATA End Type Private Enum IDE_DRIVE_NUMBER PRIMARY_MASTER PRIMARY_SLAVE SECONDARY_MASTER SECONDARY_SLAVE TERTIARY_MASTER TERTIARY_SLAVE QUARTIARY_MASTER QUARTIARY_SLAVE End Enum Private Declare Function CreateFile Lib "kernel32" _ Alias "CreateFileA" _ (ByVal lpFileName As String, _ ByVal dwDesiredAccess As Long, _ ByVal dwShareMode As Long, _ lpSecurityAttributes As Any, _ ByVal dwCreationDisposition As Long, _ ByVal dwFlagsAndAttributes As Long, _ ByVal hTemplateFile As Long) As Long Private Declare Function CloseHandle Lib "kernel32" _ (ByVal hObject As Long) As Long Private Declare Function DeviceIoControl Lib "kernel32" _ (ByVal hDevice As Long, _ ByVal dwIoControlCode As Long, _ lpInBuffer As Any, _ ByVal nInBufferSize As Long, _ lpOutBuffer As Any, _ ByVal nOutBufferSize As Long, _ lpBytesReturned As Long, _ lpOverlapped As Any) As Long Private Declare Sub CopyMemory Lib "kernel32" _ Alias "RtlMoveMemory" _ (hpvDest As Any, _ hpvSource As Any, _ ByVal cbCopy As Long) Private Type OSVERSIONINFO OSVSize As Long dwVerMajor As Long dwVerMinor As Long dwBuildNumber As Long PlatformID As Long szCSDVersion As String * 128 End Type Private Declare Function GetVersionEx Lib "kernel32" _ Alias "GetVersionExA" _ (LpVersionInformation As OSVERSIONINFO) As Long Sub ShowMoreDriveInfo() ' On Error GoTo ErrMsg ShowAllDriveInfo ("C:") ' Exit Sub ' ErrMsg: MsgBox Err.Description End Sub ' ' Sub ShowAllDriveInfo(DriveName As String) ' Dim Drive As Object, Info As String, DriveTypeIs As String ' Set Drive = CreateObject("Scripting.FileSystemObject").GetDrive(DriveName) ' Select Case Drive.DriveType Case 0: DriveTypeIs = "Unknown" Case 1: DriveTypeIs = "Removable" Case 2: DriveTypeIs = "Fixed" Case 3: DriveTypeIs = "Network" Case 4: DriveTypeIs = "CD-ROM" Case 5: DriveTypeIs = "RAM Disc" End Select ' If Drive.VolumeName = Empty Then Drive.VolumeName = "(di)" Info = "Drive " & Drive.DriveLetter & ": " & vbNewLine & _ "Drive Type: " & DriveTypeIs & vbNewLine & _ "Drive Name: " & Drive.VolumeName & vbNewLine & _ "Total Size: " & FormatNumber(Drive.TotalSize / 1024, 0) & " Kbytes" & vbNewLine & _ "Available Space: " & FormatNumber(Drive.AvailableSpace / 1024, 0) & " Kbytes" ' If Drive.IsReady Then Info = Info & vbNewLine & "Drive " & Drive.DriveLetter & " is Ready." ' MsgBox Info ' Set Drive = Nothing ' End Sub Private Function GetDriveInfo(drvNumber As IDE_DRIVE_NUMBER) As DRIVE_INFO Dim hDrive As Long Dim di As DRIVE_INFO hDrive = SmartOpen(drvNumber) If hDrive <> INVALID_HANDLE_VALUE Then If SmartGetVersion(hDrive) = True Then With di .bDriveType = 0 .NumAttributes = 0 ReDim .Attributes(0) .bDriveType = 1 End With If SmartCheckEnabled(hDrive, drvNumber) Then If IdentifyDrive(hDrive, IDE_ID_FUNCTION, drvNumber, di) = True Then GetDriveInfo = di End If End If End If End If CloseHandle hDrive End Function Private Function IdentifyDrive(ByVal hDrive As Long, _ ByVal IDCmd As Byte, _ ByVal drvNumber As IDE_DRIVE_NUMBER, _ di As DRIVE_INFO) As Boolean Dim SCIP As SENDCMDINPARAMS Dim IDSEC As IDSECTOR Dim bArrOut(OUTPUT_DATA_SIZE - 1) As Byte Dim cbBytesReturned As Long With SCIP .cBufferSize = IDENTIFY_BUFFER_SIZE .bDriveNumber = CByte(drvNumber) With .irDriveRegs .bFeaturesReg = 0 .bSectorCountReg = 1 .bSectorNumberReg = 1 .bCylLowReg = 0 .bCylHighReg = 0 .bDriveHeadReg = &HA0 If Not IsWinNT4Plus Then .bDriveHeadReg = .bDriveHeadReg Or ((drvNumber And 1) * 16) End If .bCommandReg = CByte(IDCmd) End With End With If DeviceIoControl(hDrive, _ DFP_RECEIVE_DRIVE_DATA, _ SCIP, _ Len(SCIP) - 4, _ bArrOut(0), _ OUTPUT_DATA_SIZE, _ cbBytesReturned, _ ByVal 0&) Then CopyMemory IDSEC, bArrOut(16), Len(IDSEC) di.Model = StrConv(SwapBytes(IDSEC.sModelNumber), vbUnicode) di.SerialNumber = StrConv(SwapBytes(IDSEC.sSerialNumber), vbUnicode) IdentifyDrive = True End If End Function Private Function IsWinNT4Plus() As Boolean Dim osv As OSVERSIONINFO osv.OSVSize = Len(osv) If GetVersionEx(osv) = 1 Then IsWinNT4Plus = (osv.PlatformID = VER_PLATFORM_WIN32_NT) And _ (osv.dwVerMajor >= 4) End If End Function Private Function SmartCheckEnabled(ByVal hDrive As Long, _ drvNumber As IDE_DRIVE_NUMBER) As Boolean Dim SCIP As SENDCMDINPARAMS Dim SCOP As SENDCMDOUTPARAMS Dim cbBytesReturned As Long With SCIP .cBufferSize = 0 With .irDriveRegs .bFeaturesReg = SMART_ENABLE_SMART_OPERATIONS .bSectorCountReg = 1 .bSectorNumberReg = 1 .bCylLowReg = SMART_CYL_LOW .bCylHighReg = SMART_CYL_HI .bDriveHeadReg = &HA0 If Not IsWinNT4Plus Then .bDriveHeadReg = .bDriveHeadReg Or ((drvNumber And 1) * 16) End If .bCommandReg = IDE_EXECUTE_SMART_FUNCTION End With .bDriveNumber = drvNumber End With SmartCheckEnabled = DeviceIoControl(hDrive, _ DFP_SEND_DRIVE_COMMAND, _ SCIP, _ Len(SCIP) - 4, _ SCOP, _ Len(SCOP) - 4, _ cbBytesReturned, _ ByVal 0&) End Function Private Function SmartGetVersion(ByVal hDrive As Long) As Boolean Dim cbBytesReturned As Long Dim GVOP As GETVERSIONOUTPARAMS SmartGetVersion = DeviceIoControl(hDrive, _ DFP_GET_VERSION, _ ByVal 0&, 0, _ GVOP, _ Len(GVOP), _ cbBytesReturned, _ ByVal 0&) End Function Private Function SmartOpen(drvNumber As IDE_DRIVE_NUMBER) As Long If IsWinNT4Plus() Then SmartOpen = CreateFile("\\.\PhysicalDrive" & CStr(drvNumber), _ GENERIC_READ Or GENERIC_WRITE, _ FILE_SHARE_READ Or FILE_SHARE_WRITE, _ ByVal 0&, _ OPEN_EXISTING, _ 0&, _ 0&) Else SmartOpen = CreateFile("\\.\SMARTVSD", _ 0&, 0&, _ ByVal 0&, _ CREATE_NEW, _ 0&, _ 0&) End If End Function Private Function SwapBytes(b() As Byte) As Byte() Dim bTemp As Byte Dim cnt As Long For cnt = LBound(b) To UBound(b) Step 2 bTemp = b(cnt) b(cnt) = b(cnt + 1) b(cnt + 1) = bTemp Next cnt SwapBytes = b() End Function Private Sub cmdClose_Click() DoCmd.Quit acQuitSaveAll End Sub Private Sub Form_Load() Me.lic = DLookup("[lic]", "serial_h") Dim di As DRIVE_INFO Dim drvNumber As Long di = GetDriveInfo(drvNumber) With di Select Case .bDriveType Case 0 Me.text05.Value = "[Not present]" Case 1 Me.text05.Value = Trim$(.SerialNumber) Dim rep, irep As Integer Dim asp, ass, dg, df As String dg = 0 For irep = 1 To Len(Trim$(.SerialNumber)) asp = mID((Trim$(.SerialNumber)), irep, 1) If IsNumeric(asp) = True Then ass = dg & asp dg = ass End If Next irep ''''''''''''''''''' df = "" For irep = 1 To Len(Trim$(.SerialNumber)) asp = mID((Trim$(.SerialNumber)), irep, 1) If IsNumeric(asp) = False Then ass = df & asp df = ass End If Next irep Me.text05 = Asc(df) & dg ''''''''''''''' Case 2 text05.Value = "[ATAPI drive - info not available]" Case Else text05.Value = "[drive type not known]" End Select End With Err_hem: Exit Sub End Sub
محمد أبوعبدالله قام بنشر أبريل 6, 2021 قام بنشر أبريل 6, 2021 السلام عليكم يوجد الكثير من الاكواد بالمندى لمعرفة رقم الهادر وتفضل هذا كود مختصر لمعرفة رقم الهادر ايأ كان نوعه Sub ShowDriveInfo() On Error GoTo MyErr 'تحديد القرص المراد وضع السيريال نمبر له .. محرك الأقراص سي هنا Set fs = CreateObject("Scripting.FileSystemObject") Set h = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName("d:"))) Forms!HardiskNo!HardiskSerial.Value = h.SerialNumber Dim Srl As String Srl = Nz(DLookup("SerialNo", "SerialNo")) If (h.SerialNumber + 123456) * 3 = Val(Srl) Then DoCmd.Close DoCmd.OpenForm "login" Else MsgBox "لم تقم بعد بتسجيل البرنامج", vbInformation, "officena" End If MyErr: End Sub ثم في نموذج HardiskNo نضع الكود التالي في حدث عند الفتح Call ShowDriveInfo تحياتي
ابو جودي قام بنشر أبريل 7, 2021 قام بنشر أبريل 7, 2021 (معدل) بخصوص المرفق اللى حضرتك وضعته غير كامل وهذا للحماية برقم الهارد ديسك من خلال رمز وليس لاحضار الارقام التسلسلية تم تعديل أبريل 7, 2021 بواسطه ابا جودى
aecc قام بنشر أبريل 7, 2021 الكاتب قام بنشر أبريل 7, 2021 جزاك الله خيرا صحيح ابا جودي ولكنه لم يعد يعمل على الاجهزة الحديثة لم لا استطيع تحميل الملف؟ 1
ابو جودي قام بنشر أبريل 7, 2021 قام بنشر أبريل 7, 2021 1 دقيقه مضت, aecc said: جزاك الله خيرا جزانا الله واياكم خير الجزاء ان شاؤ الله واتمنى القاعدة التى ارفقتها لك وجدت بها ضالتك ان شاء الله
ابو جودي قام بنشر أبريل 7, 2021 قام بنشر أبريل 7, 2021 رفع الملف مرة أخرى وهذه المرة الملف مضغوط رجاء وافنا بنتيجة التحميل والتجربة لا تتردد Hard Disk's Serial Number.zip
ابو جودي قام بنشر أبريل 7, 2021 قام بنشر أبريل 7, 2021 8 دقائق مضت, aecc said: جيد جزيت الجنة هل تم التحميل بنجاح وهل وجدتم بفضل الله تعالى ضالتكم بالمرفق ؟!
aecc قام بنشر أبريل 7, 2021 الكاتب قام بنشر أبريل 7, 2021 اردت تعديل نفس الكود لاني اقتطعته من باقي الكود حيث فيه تشفير وكذلك ربط بتاريخ التسجيل اما مجرد اظهار رقم الهارد فهو امر سهل ان شاء الله وجزاك الله خيرا على اجابتكم كما لا اريد ان اثقل عليكم
ابو جودي قام بنشر أبريل 7, 2021 قام بنشر أبريل 7, 2021 9 دقائق مضت, aecc said: اردت تعديل نفس الكود لاني اقتطعته من باقي الكود حيث فيه تشفير وكذلك ربط بتاريخ التسجيل اما مجرد اظهار رقم الهارد فهو امر سهل ان شاء الله وجزاك الله خيرا على اجابتكم كما لا اريد ان اثقل عليكم طيب ممكن المرفق كامل دون ان تقتطع منه شئ
ابو جودي قام بنشر أبريل 7, 2021 قام بنشر أبريل 7, 2021 3 ساعات مضت, aecc said: تفضل اخي Hdd Copy - Copy.accdb 860 kB · 1 download ان تكرمت رابط الموضوع
aecc قام بنشر أبريل 7, 2021 الكاتب قام بنشر أبريل 7, 2021 شكرا على الاهتمام ولكن لم يعمل اذا حضرتك ممكن تغير الكود فلتفعل على ان يقوم بنفس الوظائف
aecc قام بنشر أبريل 7, 2021 الكاتب قام بنشر أبريل 7, 2021 ماذا تعني برابط الموضوع؟ اذا كنت تسأل عن الكود فهو من تجميعي من مواضيع عديدة كنت عضوا قديما في هذا المنتدى وكذلك منتدى المحيط العربي للبرمجه ولكن غلبنا العمر الله المعين
ناقل قام بنشر أبريل 7, 2021 قام بنشر أبريل 7, 2021 الان, aecc said: ماذا تعني برابط الموضوع؟ اذا كنت تسأل عن الكود فهو من تجميعي من مواضيع عديدة كنت عضوا قديما في هذا المنتدى وكذلك منتدى المحيط العربي للبرمجه ولكن غلبنا العمر الله المعين اعتقد لديك مشكلة في التشفير وفك التشفير انظر المرفق ..... prog.accdb 1
ابو جودي قام بنشر أبريل 7, 2021 قام بنشر أبريل 7, 2021 30 دقائق مضت, ناقل said: اعتقد لديك مشكلة في التشفير وفك التشفير انظر المرفق ..... prog.accdb 1.05 \u0645\u064a\u062c\u0627 \u0628\u0627\u064a\u062a · 5 downloads ممكن رابط الموضوع الاصلى يا استاذ @ناقل 1
ناقل قام بنشر أبريل 7, 2021 قام بنشر أبريل 7, 2021 اعتقد الكود مقتطع من هنا للاستاذ رضا عقيل ... في ٢٦/٣/٢٠٠٧ at 18:07, رضا عقيل said: لراغبي الإبداع والتميز أداة تركيب الحماية من النسخ للبرامج المصنوعة بأكسس ( برقم الهارد الحقيقي / رقم المعالج /رقم اللوحة الأم ) الإصدار الثاني. برنامج القلعة لحماية برامج أكسس من النسخ الأول من نوعه في منتديات الأكسس مبدئياً : هذه النوع من الأدوات ندر إنتاجها داخل منتدياتنا العربية والتي كان السبق في إنتاجها لأول مره داخل منتدى الأكسس لأخونا مهند عبادي وعلى أثره نحاول إنتاج أدوات لخدمة المبرمجين بصورة فعالة في القضايا الهامة والتي يكثر فيها الأسئلة مثل الحماية وقد سبق وأنتجت أداة لحل مشاكل التقارير ... ولكن أنا أومن بأن لها ضرراً من ناحية أخرى على المبرمجين بجعلهم يتوقفون عن التفكير في حل المشاكل طالما أن حلولها جاهزة وميسرة وبالتالي يضيع عليهم ثبوتية العلم بمشقة طلبه ... لن أطيل عليكم أخواني ..... كثرت الأسئلة و المواضيع الخاصة بحماية قواعد البيانات من النسخ وكثرت الرسائل على بريدي لمن يطلبون حماية برامجهم لذلك كان لا بد من صنع أداة تقوم بهذه المهمة بصورة آلية وحسب اختيارات ورغبات المبرمج و وفاءاً بوعدي سأضع الأداة بصورة غير محمية قابلة للنسخ ( وهي مجانية للاستخدام الشخصي وغير التجاري أما من يستخدمها بشكل تجاري أو يستفيد منها مادياً فيجب عليه سداد ثمنها وبذلك نكون حافظنا على جميع الحقوق وحتى لا يضيع مجهودي هباءاً ) . قبل استخدام الأداة 1- قم بعمل نسخه احتياطية لبرنامجك 2- قم بإزالة جميع أنواع التامين من برنامجك 3- التركيب يجب أن يكون قبل تقسيم قاعدة البيانات في حالة البرامج المقسمة إلى واجهة وجداول . 3- وقف عمل مضاد الفيروسات الخاص بك قبل البدء ( ولا تخاف ) البرنامج لا يحتاج لأي مراجع إضافية وسيقوم بتركيب المراجع للقاعدة الهدف في حال احتياجها لها البرنامج يركب الحماية من النسخ المدمجة مع مدة التشغيل كما يقوم بإنشاء كراك للبرنامج مع القاعدة الهدف كما ينشئ ملف نصي يوثق فيه كل ما تم عمله في برنامجك . كما يصلح لبناء نسخ تجريبية ما بعد حماية البرنامج بعد حماية البرنامج وإعطائه للعميل وعند فتحه لأحد النماذج التي تم تركيب الحماية عليها ستظهر له شاشة ممانعه تمنعه من استخدام البرنامج قبل تسجيل نسخه شرعية ... يقوم العميل بالاتصال بك ويعطيك الرقم الظاهر أمامه على الشاشة ، فتقوم أنت بفتح الكراك الذي أنشأه برنامج القلعة في نفس مجلد البرنامج وتقوم بإدخال الرقم في الخانه المخصصة له ثم تختار مدة التشغيل التي ترغب بها أي المدة التي سيعمل خلالها البرنامج لدى العميل ثم يتوقف عن العمل طالباً فك الحماية مره أخرى ( طبعاً تستطيع فتح المده تماماً إذا كان العميل اشترى البرنامج وليس تحت التجربة ) وحسب المدة سينتج لك الكراك رقم تعطيه للعميل وبذلك تكون فتحت له النسخة مدة الاستخدام التي تراها مناسبة . إلى أخواني المشرفين ( الرجاء تثبيت الموضع لمدة طويلة ) http://www.al-wed.com/pic-vb/19.gif تم وضع برنامج القلعة (( الإصدار الثاني )) على نفس الرابط الأول ومن مميزاته انقسم البرنامج إلى ثلاث شعب 1- حماية برنامج 2- إزالة الحماية من برنامج 3- تصفير مدة الاستخدام لبرنامج ,,, تم وضع خيار جديد لتصدير أداة إخفاء إظهار الجداول المرتبطة والمضمنة والتي لا يمكن إظهارها بالخيارات العادية """ تم اعتماد تسجيل المرجع DAO3.6 مع المراجع الأخرى ( لأنني كنت أظن سابقاً أن كل مبرمج يستخدمه بشكل أساسي ) يستطيع الإصدار الثاني معرفة هل تم حماية هذا البرنامج من قبل بهذه الأداة وبأي نوع من الحماية منعاً للأخطاء """"" تم تبني فكرة عداد التاريخ من تاريخ تركيب البرنامج وليس من تاريخ الاستخدام ولذلك كان لا بد من وضع القسم الثالث وهو تصفير مدة الاستخدام وذلك حتى إذا قام المبرمج بتجربة البرنامج لديه قبل إعطائه للعميل سيتم تسجيل المدة التى قام بالتجربه فيها لذلك يجب علها تصفيرها قبل إعطائه للعميل .. إما إذا لم يقم بتجربة البرنامج فلا داعي .. http://www.al-wed.com/pic-vb/19.gif حجم البرنامج 856 كيلو بايت http://img117.imageshack.us/img117/650/14ef11pu2.gif تم تعديل الموضوع من قبل أخوكم في الله /بو يوسف الراشد وذلك نظراً لنزول الإصدار الثاني من البرنامج وذلك بناءً على طلب أخونا المبدع / رضا عقيل كما تم وضع تعليقه على الإصدار الثاني http://www.al-wed.com/pic-vb/19.gif تم رفع البرنامج + الشرح + مثال حماية برامج الأكسس.rar
aecc قام بنشر أبريل 11, 2021 الكاتب قام بنشر أبريل 11, 2021 السلام عليكم شكرا للرد اظن جزء منه بالفعل للاخ العملاق رضا عقيل جزاه الله كل الخير وكذالك اجزاء من المبدعة الاستاذة زهرة العبدالله ولكن كان ذلك منذ اكثر من 17 عام
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.