02-07-20, 01:27 AM
02-07-20, 01:38 AM
الكود الذى بالفيديو لا يخص VB.NET
وكذلك الكود مدرج بالفيديو يمكنك ايقاف الفيديو عن الدقيقة 1:20
ومن ثم كتابة الكود الذى بالفيديو لاتمام الامر المطلوب كما فى شرح الفيديو
اذا كنت تريد شى عام مثل ما هو موجود بالفيديو يمكنك مراجعة الرابط التالى
http://vb4arb.com/vb/showthread.php?tid=202
http://vb4arb.com/vb/showthread.php?tid=14717
يوجد الكثير من المواضيح والردود بهذا الامر فقط استخدم البحث وستجد كل ما تريد
وكذلك الكود مدرج بالفيديو يمكنك ايقاف الفيديو عن الدقيقة 1:20
ومن ثم كتابة الكود الذى بالفيديو لاتمام الامر المطلوب كما فى شرح الفيديو
اذا كنت تريد شى عام مثل ما هو موجود بالفيديو يمكنك مراجعة الرابط التالى
http://vb4arb.com/vb/showthread.php?tid=202
http://vb4arb.com/vb/showthread.php?tid=14717
يوجد الكثير من المواضيح والردود بهذا الامر فقط استخدم البحث وستجد كل ما تريد
03-07-20, 01:28 PM
اخي الكريم باختصار جديد اريد وضع كود للبرنامج رقم سري فقط لا اريد حماية برمجية تماما
03-07-20, 04:07 PM
يا اخي استخراج رقم الهارد بسيط لكن ابغى افهم كيف تستعمله ؟
هل يعني قبل تعطي الزبون البرنامج تعطيه البرنامج اللي يستخرج رقم الهارد بعدين يعطيك اياه عشان تضيفه في برنامجك ؟
المهم اخوي جرب الكود التالي :
انسخ الكود التالي ثم من داخل القيجوال ستوديو قم باضافة ملف من نوع Module الى مشروعك ثم افتحه والصق الكود فيه واعد تسميته بـ SerialNumber
الان ضع زر على الفورم الرئيسي 3 ليبل
اضغط على الزر دبل كليك ليفتح المحرر
قم بحذف الكود الافتراضي للفورم وقم بنسخ الكود التالي ولصقه داخل محرر الكود
هذا هو كل ماتحتاجه لكن يجب ان تعرف ان برنامجك يجب ان يعمل كمسئول لكي يستطيع ان يستخرج لك رقم الهارد
الان عند تشغيل برنامجك والضغط على الزر سوف يعيد لك ثلاثة معلومات هي :
رقم السيريال الخاص بالهارد
رقم الموديل
رقم الفيرم وير
بالتوفيق
هل يعني قبل تعطي الزبون البرنامج تعطيه البرنامج اللي يستخرج رقم الهارد بعدين يعطيك اياه عشان تضيفه في برنامجك ؟
المهم اخوي جرب الكود التالي :
انسخ الكود التالي ثم من داخل القيجوال ستوديو قم باضافة ملف من نوع Module الى مشروعك ثم افتحه والصق الكود فيه واعد تسميته بـ SerialNumber
كود :
Imports System.Security
Imports System.Runtime.InteropServices
Imports Microsoft.Win32.SafeHandles
Imports System.ComponentModel
Imports System.Text
Module SerialNumber
<SuppressUnmanagedCodeSecurity()> _
Private Class NativeMethods
<DllImport("kernel32", SetLastError:=True)> _
Public Shared Function CreateFile( _
ByVal FileName As String, _
ByVal DesiredAccess As Integer, _
ByVal ShareMode As Integer, _
ByVal SecurityAttributes As IntPtr, _
ByVal CreationDisposition As Integer, _
ByVal FlagsAndAttributes As Integer, _
ByVal hTemplateFile As IntPtr) As SafeFileHandle
End Function
<DllImport("kernel32.dll", SetLastError:=True)> _
Friend Shared Function DeviceIoControl( _
ByVal deviceHandle As SafeFileHandle, _
ByVal controlCode As Integer, _
ByRef inBuffer As ATA_PASS_THROUGH_EX_WITH_BUFFERS, _
ByVal inBufferSize As Integer, _
ByRef outBuffer As ATA_PASS_THROUGH_EX_WITH_BUFFERS, _
ByVal outBufferSize As Integer, _
ByRef bytesReturned As Integer, _
ByVal overlapped1 As IntPtr) As Boolean
End Function
End Class
<StructLayout(LayoutKind.Sequential)> _
Private Structure ATA_PASS_THROUGH_EX
Public Length As Short
Public AtaFlags As Short
Public PathId As Byte
Public TargetId As Byte
Public Lun As Byte
Public ReservedAsUchar As Byte
Public DataTransferLength As Integer
Public TimeOutValue As Integer
Public ReservedAsUlong As Integer
Public DataBufferOffset As IntPtr
<MarshalAs(UnmanagedType.ByValArray, sizeconst:=8)> _
Public PreviousTaskFile() As Byte
<MarshalAs(UnmanagedType.ByValArray, sizeconst:=8)> _
Public CurrentTaskFile() As Byte
End Structure
<StructLayout(LayoutKind.Sequential)> _
Private Structure ATA_PASS_THROUGH_EX_WITH_BUFFERS
Public Apt As ATA_PASS_THROUGH_EX
<MarshalAs(UnmanagedType.ByValArray, sizeconst:=512)> _
Public Data() As Byte
End Structure
Public Enum HDINFO
HD_MODEL_NUMBER = 0
HD_SERIAL_NUMBER = 1
HD_FIRMWARE_REVISION = 2
End Enum
Public Function HDDInfo(ByVal InfoType As HDINFO) As String
Dim letter As Char = "c"
Const GenericRead As Integer = &H80000000
Const GenericWrite As Integer = &H40000000
Const FileShareRead As Integer = 1
Const FileShareWrite As Integer = 2
Const OpenExisting As Integer = 3
Dim drivePath As String = String.Concat("\\.\" & letter & ":")
Using driveHandle As SafeFileHandle = NativeMethods.CreateFile( _
drivePath, _
GenericRead Or GenericWrite, _
FileShareRead Or FileShareWrite, _
IntPtr.Zero, _
OpenExisting, _
0, _
IntPtr.Zero)
If driveHandle.IsInvalid Then
Return "CreateFile ERROR: " & (New Win32Exception).Message
End If
Dim apex As New ATA_PASS_THROUGH_EX
apex.Length = Marshal.SizeOf(apex)
' ATA_FLAGS_DATA_IN
apex.AtaFlags = 2
' The command returns a 512 byte package of info.
apex.DataTransferLength = 512
apex.TimeOutValue = 10 ' 10 second timeout.
apex.DataBufferOffset = Marshal.OffsetOf( _
GetType(ATA_PASS_THROUGH_EX_WITH_BUFFERS), "Data")
' This contains the command we are requesting.
apex.CurrentTaskFile = New Byte(7) {}
'the command "IDENTIFY DEVICE"
apex.CurrentTaskFile(6) = &HEC
Dim apexb As New ATA_PASS_THROUGH_EX_WITH_BUFFERS
apexb.Apt = apex
Dim inBufferSize As Integer = Marshal.SizeOf( _
GetType(ATA_PASS_THROUGH_EX_WITH_BUFFERS))
Dim bytesReturned As Integer
Const IOCTL_ATA_PASS_THROUGH As Integer = &H4D02C
Dim result As Boolean = NativeMethods.DeviceIoControl( _
driveHandle, IOCTL_ATA_PASS_THROUGH, _
apexb, inBufferSize, apexb, inBufferSize, _
bytesReturned, IntPtr.Zero)
If result = False Then
Return "DeviceIOControl ERROR: " & (New Win32Exception).Message
End If
Select Case InfoType
Case HDINFO.HD_SERIAL_NUMBER
Return GetString(apexb.Data, 20, 20)
Case HDINFO.HD_FIRMWARE_REVISION
Return GetString(apexb.Data, 46, 8)
Case HDINFO.HD_MODEL_NUMBER
Return GetString(apexb.Data, 54, 40)
Case Else
Return Nothing
End Select
End Using
End Function
Private Function GetString(ByVal bytes() As Byte, _
ByVal offset As Integer, _
ByVal length As Integer) As String
' The strings are slightly weird - endianness?
' If you use ASCII.GetBytes Then Each character
' pair is reversed.
Dim sb As New StringBuilder()
For i As Integer = offset To offset + length - 1 Step 2
sb.Append(Chr(bytes(i + 1)))
sb.Append(Chr(bytes(i)))
Next
Return RTrim(LTrim(sb.ToString))
End Function
End Moduleالان ضع زر على الفورم الرئيسي 3 ليبل
اضغط على الزر دبل كليك ليفتح المحرر
قم بحذف الكود الافتراضي للفورم وقم بنسخ الكود التالي ولصقه داخل محرر الكود
كود :
Imports System.Security.Principal
Public Class Form1
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Label1.Text = HDDInfo(HDINFO.HD_SERIAL_NUMBER)
Label2.Text = HDDInfo(HDINFO.HD_MODEL_NUMBER)
Label3.Text = HDDInfo(HDINFO.HD_FIRMWARE_REVISION)
End Sub
End Classهذا هو كل ماتحتاجه لكن يجب ان تعرف ان برنامجك يجب ان يعمل كمسئول لكي يستطيع ان يستخرج لك رقم الهارد
الان عند تشغيل برنامجك والضغط على الزر سوف يعيد لك ثلاثة معلومات هي :
رقم السيريال الخاص بالهارد
رقم الموديل
رقم الفيرم وير
بالتوفيق
05-07-20, 12:24 AM
جزاك الله خير جاري تجريب وراجعلك اخي
07-07-20, 04:59 AM
(05-07-20, 12:24 AM)abdodz كتب : [ -> ]جزاك الله خير جاري تجريب وراجعلك اخي
ارجو الافادة لم تنجح معي اريد كود سري فقط للبرنامج
(03-07-20, 04:07 PM)معاند الحظ كتب : [ -> ]يا اخي استخراج رقم الهارد بسيط لكن ابغى افهم كيف تستعمله ؟
هل يعني قبل تعطي الزبون البرنامج تعطيه البرنامج اللي يستخرج رقم الهارد بعدين يعطيك اياه عشان تضيفه في برنامجك ؟
المهم اخوي جرب الكود التالي :
انسخ الكود التالي ثم من داخل القيجوال ستوديو قم باضافة ملف من نوع Module الى مشروعك ثم افتحه والصق الكود فيه واعد تسميته بـ SerialNumber
كود :
Imports System.Security
Imports System.Runtime.InteropServices
Imports Microsoft.Win32.SafeHandles
Imports System.ComponentModel
Imports System.Text
Module SerialNumber
<SuppressUnmanagedCodeSecurity()> _
Private Class NativeMethods
<DllImport("kernel32", SetLastError:=True)> _
Public Shared Function CreateFile( _
ByVal FileName As String, _
ByVal DesiredAccess As Integer, _
ByVal ShareMode As Integer, _
ByVal SecurityAttributes As IntPtr, _
ByVal CreationDisposition As Integer, _
ByVal FlagsAndAttributes As Integer, _
ByVal hTemplateFile As IntPtr) As SafeFileHandle
End Function
<DllImport("kernel32.dll", SetLastError:=True)> _
Friend Shared Function DeviceIoControl( _
ByVal deviceHandle As SafeFileHandle, _
ByVal controlCode As Integer, _
ByRef inBuffer As ATA_PASS_THROUGH_EX_WITH_BUFFERS, _
ByVal inBufferSize As Integer, _
ByRef outBuffer As ATA_PASS_THROUGH_EX_WITH_BUFFERS, _
ByVal outBufferSize As Integer, _
ByRef bytesReturned As Integer, _
ByVal overlapped1 As IntPtr) As Boolean
End Function
End Class
<StructLayout(LayoutKind.Sequential)> _
Private Structure ATA_PASS_THROUGH_EX
Public Length As Short
Public AtaFlags As Short
Public PathId As Byte
Public TargetId As Byte
Public Lun As Byte
Public ReservedAsUchar As Byte
Public DataTransferLength As Integer
Public TimeOutValue As Integer
Public ReservedAsUlong As Integer
Public DataBufferOffset As IntPtr
<MarshalAs(UnmanagedType.ByValArray, sizeconst:=8)> _
Public PreviousTaskFile() As Byte
<MarshalAs(UnmanagedType.ByValArray, sizeconst:=8)> _
Public CurrentTaskFile() As Byte
End Structure
<StructLayout(LayoutKind.Sequential)> _
Private Structure ATA_PASS_THROUGH_EX_WITH_BUFFERS
Public Apt As ATA_PASS_THROUGH_EX
<MarshalAs(UnmanagedType.ByValArray, sizeconst:=512)> _
Public Data() As Byte
End Structure
Public Enum HDINFO
HD_MODEL_NUMBER = 0
HD_SERIAL_NUMBER = 1
HD_FIRMWARE_REVISION = 2
End Enum
Public Function HDDInfo(ByVal InfoType As HDINFO) As String
Dim letter As Char = "c"
Const GenericRead As Integer = &H80000000
Const GenericWrite As Integer = &H40000000
Const FileShareRead As Integer = 1
Const FileShareWrite As Integer = 2
Const OpenExisting As Integer = 3
Dim drivePath As String = String.Concat("\\.\" & letter & ":")
Using driveHandle As SafeFileHandle = NativeMethods.CreateFile( _
drivePath, _
GenericRead Or GenericWrite, _
FileShareRead Or FileShareWrite, _
IntPtr.Zero, _
OpenExisting, _
0, _
IntPtr.Zero)
If driveHandle.IsInvalid Then
Return "CreateFile ERROR: " & (New Win32Exception).Message
End If
Dim apex As New ATA_PASS_THROUGH_EX
apex.Length = Marshal.SizeOf(apex)
' ATA_FLAGS_DATA_IN
apex.AtaFlags = 2
' The command returns a 512 byte package of info.
apex.DataTransferLength = 512
apex.TimeOutValue = 10 ' 10 second timeout.
apex.DataBufferOffset = Marshal.OffsetOf( _
GetType(ATA_PASS_THROUGH_EX_WITH_BUFFERS), "Data")
' This contains the command we are requesting.
apex.CurrentTaskFile = New Byte(7) {}
'the command "IDENTIFY DEVICE"
apex.CurrentTaskFile(6) = &HEC
Dim apexb As New ATA_PASS_THROUGH_EX_WITH_BUFFERS
apexb.Apt = apex
Dim inBufferSize As Integer = Marshal.SizeOf( _
GetType(ATA_PASS_THROUGH_EX_WITH_BUFFERS))
Dim bytesReturned As Integer
Const IOCTL_ATA_PASS_THROUGH As Integer = &H4D02C
Dim result As Boolean = NativeMethods.DeviceIoControl( _
driveHandle, IOCTL_ATA_PASS_THROUGH, _
apexb, inBufferSize, apexb, inBufferSize, _
bytesReturned, IntPtr.Zero)
If result = False Then
Return "DeviceIOControl ERROR: " & (New Win32Exception).Message
End If
Select Case InfoType
Case HDINFO.HD_SERIAL_NUMBER
Return GetString(apexb.Data, 20, 20)
Case HDINFO.HD_FIRMWARE_REVISION
Return GetString(apexb.Data, 46, 8)
Case HDINFO.HD_MODEL_NUMBER
Return GetString(apexb.Data, 54, 40)
Case Else
Return Nothing
End Select
End Using
End Function
Private Function GetString(ByVal bytes() As Byte, _
ByVal offset As Integer, _
ByVal length As Integer) As String
' The strings are slightly weird - endianness?
' If you use ASCII.GetBytes Then Each character
' pair is reversed.
Dim sb As New StringBuilder()
For i As Integer = offset To offset + length - 1 Step 2
sb.Append(Chr(bytes(i + 1)))
sb.Append(Chr(bytes(i)))
Next
Return RTrim(LTrim(sb.ToString))
End Function
End Module
الان ضع زر على الفورم الرئيسي 3 ليبل
اضغط على الزر دبل كليك ليفتح المحرر
قم بحذف الكود الافتراضي للفورم وقم بنسخ الكود التالي ولصقه داخل محرر الكود
كود :
Imports System.Security.Principal
Public Class Form1
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Label1.Text = HDDInfo(HDINFO.HD_SERIAL_NUMBER)
Label2.Text = HDDInfo(HDINFO.HD_MODEL_NUMBER)
Label3.Text = HDDInfo(HDINFO.HD_FIRMWARE_REVISION)
End Sub
End Class
هذا هو كل ماتحتاجه لكن يجب ان تعرف ان برنامجك يجب ان يعمل كمسئول لكي يستطيع ان يستخرج لك رقم الهارد
الان عند تشغيل برنامجك والضغط على الزر سوف يعيد لك ثلاثة معلومات هي :
رقم السيريال الخاص بالهارد
رقم الموديل
رقم الفيرم وير
بالتوفيق
نعم اخي اعطيه اللبرنامج ويعطيني رقم الهارد لكن اين اضعة في برنامجي هنا المشكل اين الكود الدي اضع فيه رقم الهارد بعد الحصول عليه
07-07-20, 05:17 AM
السلام عليكم ورحمة الله وبركاته
اخي الكريم طرق الحماية كثيرة ومتنوعة والاساليب لعملها مختلفة
ولكن بالمطلق لايوجد حماية كاملة حاول الاطلاع على بعض من هذه الطرق ومبدأ عملها
شاهد هذا الرابط فكرة بسيطة
https://www.youtube.com/watch?v=XFg59nyqINs
اخي الكريم طرق الحماية كثيرة ومتنوعة والاساليب لعملها مختلفة
ولكن بالمطلق لايوجد حماية كاملة حاول الاطلاع على بعض من هذه الطرق ومبدأ عملها
شاهد هذا الرابط فكرة بسيطة
https://www.youtube.com/watch?v=XFg59nyqINs
07-07-20, 05:46 AM
(07-07-20, 04:59 AM)abdodz كتب : [ -> ]نعم اخي اعطيه اللبرنامج ويعطيني رقم الهارد لكن اين اضعة في برنامجي هنا المشكل اين الكود الدي اضع فيه رقم الهارد بعد الحصول عليه
يا اخي اذا اعطاك المستخدم رقم الهارد
فيجب عليك اولا اضافة الكود التالي داخل ملف من نوع Module في برنامجك
كود :
Imports System.Security
Imports System.Runtime.InteropServices
Imports Microsoft.Win32.SafeHandles
Imports System.ComponentModel
Imports System.Text
Module SerialNumber
<SuppressUnmanagedCodeSecurity()> _
Private Class NativeMethods
<DllImport("kernel32", SetLastError:=True)> _
Public Shared Function CreateFile( _
ByVal FileName As String, _
ByVal DesiredAccess As Integer, _
ByVal ShareMode As Integer, _
ByVal SecurityAttributes As IntPtr, _
ByVal CreationDisposition As Integer, _
ByVal FlagsAndAttributes As Integer, _
ByVal hTemplateFile As IntPtr) As SafeFileHandle
End Function
<DllImport("kernel32.dll", SetLastError:=True)> _
Friend Shared Function DeviceIoControl( _
ByVal deviceHandle As SafeFileHandle, _
ByVal controlCode As Integer, _
ByRef inBuffer As ATA_PASS_THROUGH_EX_WITH_BUFFERS, _
ByVal inBufferSize As Integer, _
ByRef outBuffer As ATA_PASS_THROUGH_EX_WITH_BUFFERS, _
ByVal outBufferSize As Integer, _
ByRef bytesReturned As Integer, _
ByVal overlapped1 As IntPtr) As Boolean
End Function
End Class
<StructLayout(LayoutKind.Sequential)> _
Private Structure ATA_PASS_THROUGH_EX
Public Length As Short
Public AtaFlags As Short
Public PathId As Byte
Public TargetId As Byte
Public Lun As Byte
Public ReservedAsUchar As Byte
Public DataTransferLength As Integer
Public TimeOutValue As Integer
Public ReservedAsUlong As Integer
Public DataBufferOffset As IntPtr
<MarshalAs(UnmanagedType.ByValArray, sizeconst:=8)> _
Public PreviousTaskFile() As Byte
<MarshalAs(UnmanagedType.ByValArray, sizeconst:=8)> _
Public CurrentTaskFile() As Byte
End Structure
<StructLayout(LayoutKind.Sequential)> _
Private Structure ATA_PASS_THROUGH_EX_WITH_BUFFERS
Public Apt As ATA_PASS_THROUGH_EX
<MarshalAs(UnmanagedType.ByValArray, sizeconst:=512)> _
Public Data() As Byte
End Structure
Public Enum HDINFO
HD_MODEL_NUMBER = 0
HD_SERIAL_NUMBER = 1
HD_FIRMWARE_REVISION = 2
End Enum
Public Function HDDInfo(ByVal InfoType As HDINFO) As String
Dim letter As Char = "c"
Const GenericRead As Integer = &H80000000
Const GenericWrite As Integer = &H40000000
Const FileShareRead As Integer = 1
Const FileShareWrite As Integer = 2
Const OpenExisting As Integer = 3
Dim drivePath As String = String.Concat("\\.\" & letter & ":")
Using driveHandle As SafeFileHandle = NativeMethods.CreateFile( _
drivePath, _
GenericRead Or GenericWrite, _
FileShareRead Or FileShareWrite, _
IntPtr.Zero, _
OpenExisting, _
0, _
IntPtr.Zero)
If driveHandle.IsInvalid Then
Return "CreateFile ERROR: " & (New Win32Exception).Message
End If
Dim apex As New ATA_PASS_THROUGH_EX
apex.Length = Marshal.SizeOf(apex)
' ATA_FLAGS_DATA_IN
apex.AtaFlags = 2
' The command returns a 512 byte package of info.
apex.DataTransferLength = 512
apex.TimeOutValue = 10 ' 10 second timeout.
apex.DataBufferOffset = Marshal.OffsetOf( _
GetType(ATA_PASS_THROUGH_EX_WITH_BUFFERS), "Data")
' This contains the command we are requesting.
apex.CurrentTaskFile = New Byte(7) {}
'the command "IDENTIFY DEVICE"
apex.CurrentTaskFile(6) = &HEC
Dim apexb As New ATA_PASS_THROUGH_EX_WITH_BUFFERS
apexb.Apt = apex
Dim inBufferSize As Integer = Marshal.SizeOf( _
GetType(ATA_PASS_THROUGH_EX_WITH_BUFFERS))
Dim bytesReturned As Integer
Const IOCTL_ATA_PASS_THROUGH As Integer = &H4D02C
Dim result As Boolean = NativeMethods.DeviceIoControl( _
driveHandle, IOCTL_ATA_PASS_THROUGH, _
apexb, inBufferSize, apexb, inBufferSize, _
bytesReturned, IntPtr.Zero)
If result = False Then
Return "DeviceIOControl ERROR: " & (New Win32Exception).Message
End If
Select Case InfoType
Case HDINFO.HD_SERIAL_NUMBER
Return GetString(apexb.Data, 20, 20)
Case HDINFO.HD_FIRMWARE_REVISION
Return GetString(apexb.Data, 46, 8)
Case HDINFO.HD_MODEL_NUMBER
Return GetString(apexb.Data, 54, 40)
Case Else
Return Nothing
End Select
End Using
End Function
Private Function GetString(ByVal bytes() As Byte, _
ByVal offset As Integer, _
ByVal length As Integer) As String
' The strings are slightly weird - endianness?
' If you use ASCII.GetBytes Then Each character
' pair is reversed.
Dim sb As New StringBuilder()
For i As Integer = offset To offset + length - 1 Step 2
sb.Append(Chr(bytes(i + 1)))
sb.Append(Chr(bytes(i)))
Next
Return RTrim(LTrim(sb.ToString))
End Function
End Moduleثم استخدم الكود التالي مع ملاحظة انك يجب ان تستبدل القيمة التالية Dim SN As String = "XX-XXXXXXXX" برقم الهارد الذي اعطاك العميل
ثم في حدث الفورم لود تقوم بالتحقق اذا كان الرقم المحفوظ في المتغير SN يطابق رقم الهارد للجهاز الذي يعمل عليه برنامجك
كود :
Public Class Form1
Dim SN As String = "XX-XXXXXXXX"
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
'اولا يجب استخراج رقم الهارد لكمبيوتر العميل
'SN ثم مقارنته مع الرقم الذي اعطاك اياه العميل والمحفوظ في المتغير
If HDDInfo(HDINFO.HD_SERIAL_NUMBER) = SN Then
' طابق رقم هارد العميل الرقم المحفوظ
'لذا يمكن للعميل متابعة العمل على البرنامج
Else
MsgBox("غير مسموح لك بتشغيل البرنامج")
End If
End Sub
End Class08-07-20, 02:10 AM
جزاك الله الف خير جاري تجريب وانا متابع للموضوع
08-07-20, 07:14 AM
اخوي عبود
ياليت تتاكد انك فهمت شرحي وطبقته بشكل صحيح .
لكن ولا يهمك سويت لك مثال لبرنامج يستخرج رقم الهارد حمله من المرفقات
وبرنامج مثال AbodApp وهو برنامج تجربة طريقة الحماية برقم الهارد دسك
ملاحظة : اذا اشتغلت كل البرنامجين عندك انصحك تراجع خطواتك عشان تعرف فين اخطيت
لكن اذا ما اشتغلت معناها المشكلة من عندك.
اتمنى لك التوفيق.
برنامج جلب رقم الهارد دسك
[attachment=25211]
برنامج تجربة حماية برقم الهارد دسك
[attachment=25212]
ياليت تتاكد انك فهمت شرحي وطبقته بشكل صحيح .
لكن ولا يهمك سويت لك مثال لبرنامج يستخرج رقم الهارد حمله من المرفقات
وبرنامج مثال AbodApp وهو برنامج تجربة طريقة الحماية برقم الهارد دسك
ملاحظة : اذا اشتغلت كل البرنامجين عندك انصحك تراجع خطواتك عشان تعرف فين اخطيت
لكن اذا ما اشتغلت معناها المشكلة من عندك.
اتمنى لك التوفيق.
برنامج جلب رقم الهارد دسك
[attachment=25211]
برنامج تجربة حماية برقم الهارد دسك
[attachment=25212]