السادة الأفاضل
الأستاذ الفاضل ،، تحاتي
قمت بإستخراج رقم الهارد في الخلية A1
عن طريق الكود و المعادبة التالية
Function GetPhysicalSerial() As Variant
Dim obj As Object Dim WMI As Object Dim SNList() As String, i As Long, Count As Long Set WMI = GetObject("WinMgmts:") For Each obj In WMI.InstancesOf("Win32_PhysicalMedia") If obj.SerialNumber <> "" Then Count = Count + 1 Next ReDim SNList(1 To Count, 1 To 1) i = 1 For Each obj In WMI.InstancesOf("Win32_PhysicalMedia") SNList(i, 1) = obj.SerialNumber i = i + 1 If i > Count Then Exit For Next GetPhysicalSerial = SNList End Function
ووضع المعادلة الأتية في الخلية A1
=GetPhysicalSerial()
وبعد ذلك وضعت الكود التالي لربط رقم الهارد بفتح الملف
Private Const A As String = "A12533225"
Private Const B As String = "B15223662"
Private Const C As String = "TOSHIBA MK6476GSX"
Private Sub Workbook_Open()
Dim s As String
With GetObject("winmgmts:\\.\root\CIMV2")
For Each itm In .ExecQuery("SELECT * FROM Win32_DiskDrive", , 48)
s = s & itm.Model
Next itm
End With
If s = A Or s = B Or s = C Then
MsgBox "تم مطابقة الهارد بنجاح ", vbInformation, "تفضل بالدخول"
Else
MsgBox "هذا البرنامج يعمل على أجهزة معينه فقط", vbInformation, "سيتم إغلاق البرنامج"
With ActiveWorkbook
.Close
.Saved = True
End With
Exit Sub
End If
End Sub
لكن في كل مره تظهر رسالة ان البرنامج يعمل على اجهزة معينة و معنى ذلك انني افتقد ربط هذا الكود بقراءة رقم الهارد الموجود في الخلية A1
علما بإن الأكواد و المعادلات هى من المشاركة الموجودة من السادة الأفاضل على اللينك الأتي
http://www.officena.net/ib/index.php?showtopic=43800
ارجوكم الحل بإذن الله