الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ماهو الكود الى يطلع لى رقم السى دي المدمج الى وضعه الصانع

مغلق
بدأه Yemen VB6 في 16 يونيو 2006 · 4 رد · 875 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كيف اجعل رقم السى دي الليزى (القرص) الذى وضعه الصانع للسى دى

يظهر فى التكست

وشكرا لكم

رُب ( وامعتصماه ) إنطلقت *** ملْء أفـواه الصبايا اليُتـم

لامـسـت أسْـماعـهـم لاكـنهـا *** لمْ تلامس نخْوة المعتصم

#2

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

يمكن ذلك بكل بساطة من خلال دوال API

الدالتين :

GetDriveType

GetVolumeInformation

نضع أولا إعلان هاتين الدالتين فى موديول هكذا ..

Public Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Public Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long


ثم انشاء وظيفة صغيرة لترجع لنا سيريال الدرايف المعطى لها كالتالى :
Public Function GetSerialNumber(strDrive As String) As Long
If Len(strDrive) = 1 Then strDrive = strDrive & ":\"
If Len(strDrive) = 2 And Right$(strDrive, 1) = ":" Then strDrive = strDrive & "\"
If Len(strDrive) = 3 Then
Dim SerialNum As Long
Dim Res As Long
Dim Temp1 As String
Dim temp2 As String
Temp1 = String$(255, Chr$(0))
temp2 = String$(255, Chr$(0))
Res = GetVolumeInformation(strDrive, Temp1, Len(Temp1), SerialNum, 0, 0, temp2, Len(temp2))
GetSerialNumber = SerialNum
End If
End Function


ثم فى حدث تحميل الفورم نعمل تشك على كل الدريفز الموجودة , ثم نختار منهم سواقة الأقراص ونأتى بالسيريال لها فقط

Private Sub Form_Load()
Dim i As Integer
Dim sCD As String

For i = 65 To 90
If GetDriveType(Chr(i) & ":\") = 5 Then sCD = Chr(i): Exit For
Next

Text1.Text = Val(GetSerialNumber(sCD) * -1)
End Sub

ملحوظة هامة : لو أن السيريال فى مربع النص =0 إذن إما انه لاتوجد اسطوانة فى الجهاز أو أن الجهاز غير مستعد للقراءة

وارجو أن يكون الكود سهل ومفهوم.

لآ إله إلا الله محمد رسول الله

#3

جزاك الله الف خير اخ Siner

وزادنا من علمة

تحياتى لك

رُب ( وامعتصماه ) إنطلقت *** ملْء أفـواه الصبايا اليُتـم

لامـسـت أسْـماعـهـم لاكـنهـا *** لمْ تلامس نخْوة المعتصم

#4

السلام عليكم

ارجوا منكم المشاركه للوصل للحل

جربت كود الاخ Siner وكل شئ تمام برمجت الفورم فى حدث الـ Load على ان يفحص رقم القرص الليزري

فإن وجده مطابق يشتغل الفورم ويحمل

لكن شئ غريب يحدث !!!

عند عمل نسخ للبرنامج فى السي دي وبعد مايخلص النسخ

تظهر رساله البرنامج إلى مسويه ان كود السي دي غير مطابق للكود ( إن كود السي دي بيتغير كل مره بنعمل فيها نسخ ملفات للسي دي )

فهل من حل ؟

تم تعديل هذه المشاركة بواسطة Yemen VB6 في 24 أغسطس 2007 في 15:44

رُب ( وامعتصماه ) إنطلقت *** ملْء أفـواه الصبايا اليُتـم

لامـسـت أسْـماعـهـم لاكـنهـا *** لمْ تلامس نخْوة المعتصم

#5
اقتباس
تظهر رساله البرنامج إلى مسويه ان كود السي دي غير مطابق للكود ( إن كود السي دي بيتغير كل مره بنعمل فيها نسخ ملفات للسي دي )

لأنه متغير من أسطوانة لأخرى.

أنسخ على الأسطوانة الفارعة اى ملف و ليكن ملف نصى فارغ و لا تقفل الأسطوانة ( يعنى تسمح لها بأن ينسخ عليها من جديد ).

أستخدم الكود السابق لمعرفة رقم الأسطوانة.

ضعه بالمشروع و أنشئ EXE يكون به الرقم و أكمل نسخ الأسطوانة.

لكن جربها الأول مع أسطوانة واحدة أن نفعت فكرر العملية مع كل أسطوانة.

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…