منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
سورس كود ملف ربط ديناميكى لتحديد فتره استخدام البرنامج - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : الأقسام التعليمية - المنتدى القديم (http://vb4arb.com/vb/forumdisplay.php?fid=90)
+--- قسم : مكتبة أكواد المنتدى (http://vb4arb.com/vb/forumdisplay.php?fid=111)
+---- قسم : مكتبة أكواد .net (http://vb4arb.com/vb/forumdisplay.php?fid=117)
+---- الموضوع : سورس كود ملف ربط ديناميكى لتحديد فتره استخدام البرنامج (/showthread.php?tid=6343)



سورس كود ملف ربط ديناميكى لتحديد فتره استخدام البرنامج - RaggiTech - 17-10-12

كاتب الموضوع : SUB NEW

الاخوه والاخوات الكرام

الكود التالى قد يفيدكم وهو عباره عن كلاس كامل قم بعمله ملف ربط ديناميكى واستورده فى مشروعك لعمل برنامج له فتره تجريبيه انت تحددها حتى تضمن عدم استخدام برنامجك اكثر من الوقت المحدد لتجربته


لتجربته افتح مشروع جديد واختر اضافه كلاس وانسخ الكود والصقه بداخل المحرر ومن قائمه بناء المشروع اختر بناء المشروع وستجد الملف النهائى على هيئه ملف ربط ديناميكى DLL داخل ملف مشروعك فقط قم باستيراده كالتالى

project - add refrece
استعرض الملفات الى ان تجده واستورده لمشروعك واكتب الكود التالى فى الفورم


كود :
[color=#000000][COLOR=#0000bb]Dim obj [/color][color=#007700]As New [/color][color=#0000bb]Trial_Version[/color][color=#007700].[/color][COLOR=#0000bb]RegistryTrial
        [/COLOR][COLOR=#dd0000]'The following code is used to operate Trial Version DLL  
        Dim str As String = obj.Regedit(10) '[/COLOR][COLOR=#0000bb]no of trial days

        [/COLOR][color=#007700]If [/color][color=#0000bb]str [/color][color=#007700]= [/color][COLOR=#0000bb]Nothing Then
            Me[/COLOR][color=#007700].[/color][color=#0000bb]Close[/color][COLOR=#007700]()
        Else
            If [/COLOR][color=#0000bb]str[/color][color=#007700].[/color][color=#0000bb]StartsWith[/color][color=#007700]([/color][color=#dd0000]"123"[/color][color=#007700]) = [/color][COLOR=#0000bb]True Then
                MsgBox[/COLOR][color=#007700]([/color][color=#0000bb]str[/color][color=#007700].[/color][color=#0000bb]Substring[/color][color=#007700]([/color][color=#0000bb]3[/color][color=#007700]), [/color][color=#0000bb]MsgBoxStyle[/color][color=#007700].[/color][color=#0000bb]Information[/color][color=#007700], [/color][color=#dd0000]"Information"[/color][COLOR=#007700])
                If [/COLOR][color=#0000bb]Me[/color][color=#007700].[/color][color=#0000bb]MdiChildren[/color][color=#007700].[/color][color=#0000bb]Length [/color][color=#007700]> [/color][COLOR=#0000bb]0 Then
                    [/COLOR][color=#007700]Exit [/color][COLOR=#0000bb]Sub
                End [/COLOR][COLOR=#007700]If
                [/COLOR][color=#0000bb]Dim frm [/color][color=#007700]As New [/color][COLOR=#0000bb]Login
                [/COLOR][color=#007700]If [/color][color=#0000bb]frm[/color][color=#007700].[/color][color=#0000bb]IsMdiChild [/color][color=#007700]= [/color][COLOR=#0000bb]True Then
                    frm[/COLOR][color=#007700].[/color][color=#0000bb]Focus[/color][COLOR=#007700]()
                Else
                    [/COLOR][color=#0000bb]frm[/color][color=#007700].[/color][color=#0000bb]Dispose[/color][COLOR=#007700]()

                    [/COLOR][color=#0000bb]frm [/color][color=#007700]= New [/color][COLOR=#0000bb]Login
                    frm[/COLOR][color=#007700].[/color][color=#0000bb]MdiParent [/color][color=#007700]= [/color][COLOR=#0000bb]Me
                    Me[/COLOR][color=#007700].[/color][color=#0000bb]MenuStrip[/color][color=#007700].[/color][color=#0000bb]Enabled [/color][color=#007700]= [/color][COLOR=#0000bb]False
                    frm[/COLOR][color=#007700].[/color][color=#0000bb]Show[/color][COLOR=#007700]()
                [/COLOR][color=#0000bb]End [/color][COLOR=#007700]If
            Else
                [/COLOR][color=#0000bb]MsgBox[/color][color=#007700]([/color][color=#0000bb]str[/color][color=#007700], [/color][color=#0000bb]MsgBoxStyle[/color][color=#007700].[/color][color=#0000bb]Critical[/color][color=#007700], [/color][color=#dd0000]"Error"[/color][COLOR=#007700])
                [/COLOR][color=#0000bb]Me[/color][color=#007700].[/color][color=#0000bb]Close[/color][COLOR=#007700]()
            [/COLOR][color=#0000bb]End [/color][COLOR=#007700]If
        [/COLOR][color=#0000bb]End [/color][COLOR=#007700]If
      

[/COLOR][color=#0000bb]Write following on close Button[/color][COLOR=#007700]:

  If [/COLOR][color=#0000bb]MessageBox[/color][color=#007700].[/color][color=#0000bb]Show[/color][color=#007700]([/color][color=#dd0000]"Are you sure,you want to Exit application."[/color][color=#007700], [/color][color=#dd0000]"Exit"[/color][color=#007700], [/color][color=#0000bb]MessageBoxButtons[/color][color=#007700].[/color][color=#0000bb]YesNo[/color][color=#007700], [/color][color=#0000bb]MessageBoxIcon[/color][color=#007700].[/color][color=#0000bb]Question[/color][color=#007700]) = [/color][color=#0000bb]Windows[/color][color=#007700].[/color][color=#0000bb]Forms[/color][color=#007700].[/color][color=#0000bb]DialogResult[/color][color=#007700].[/color][COLOR=#0000bb]Yes Then
            Dim obj [/COLOR][color=#007700]As New [/color][color=#0000bb]Trial_Version[/color][color=#007700].[/color][COLOR=#0000bb]RegistryTrial
            obj[/COLOR][color=#007700].[/color][color=#0000bb]SaveLastAceessDateTime[/color][COLOR=#007700]()
            [/COLOR][color=#0000bb]Me[/color][color=#007700].[/color][color=#0000bb]Close[/color][COLOR=#007700]()
        Else
            [/COLOR][color=#0000bb]Me[/color][color=#007700].[/color][color=#0000bb]Show[/color][COLOR=#007700]()
        [/COLOR][color=#0000bb]End [/color][COLOR=#007700]If  
[/COLOR][color=#0000bb][/color][/COLOR]

اذا دخلت على المسار التالى فى الريجسترى ستجد قيمه برنامجك مكتوبه به

(HKEY_LOCAL_MACHINE à SOFTWARE à AppSecurity)

الكود كامل مع الشرح بالعربى قدر الامكان


كود :
[color=#000000][COLOR=#0000bb]Imports Microsoft[/color][color=#007700].[/color][COLOR=#0000bb]Win32
[/COLOR][COLOR=#dd0000]'مع تحياتى عماد ابو شنب المحامى
Public Class RegistryTrial
    Private Last, First, RemainsDays, RemainsDays1, strOldDay, strOldMonth, strOldYear As String
    '[/COLOR][color=#0000bb]عدد الايام لانتهاء النسخه التجريبيه[/color][COLOR=#007700].
    Private [/COLOR][color=#0000bb]mintSystem_UsedTrialDays [/color][color=#007700]As [/color][color=#0000bb]Integer [/color][COLOR=#dd0000]'حساب الايام التى استخدم فيها البرنامج
    Public StartDate As String
    Public LastDate As String
    Public FinalDate, FinalDateTime As String
    Public Function Regedit(ByVal TrialPeriod As Integer) As String
        '[/COLOR][COLOR=#0000bb]كتابه مفتاح فى الريجسترى وتخزين القيمه فيه باسم البرنامج
        Dim regKey [/COLOR][color=#007700]As [/color][COLOR=#0000bb]RegistryKey
        [/COLOR][COLOR=#007700]Try
            [/COLOR][color=#0000bb]Dim strRet [/color][color=#007700]As [/color][color=#0000bb]String [/color][color=#007700]= [/color][COLOR=#dd0000]""
            [/COLOR][color=#0000bb]regKey [/color][color=#007700]= [/color][color=#0000bb]Registry[/color][color=#007700].[/color][color=#0000bb]LocalMachine[/color][color=#007700].[/color][color=#0000bb]OpenSubKey[/color][color=#007700]([/color][color=#dd0000]"SOFTWARE"[/color][color=#007700], [/color][color=#0000bb]True[/color][COLOR=#007700])
            [/COLOR][color=#0000bb]regKey [/color][color=#007700]= [/color][color=#0000bb]Registry[/color][color=#007700].[/color][color=#0000bb]LocalMachine[/color][color=#007700].[/color][color=#0000bb]OpenSubKey[/color][color=#007700]([/color][color=#dd0000]"Software\AppSecurity"[/color][color=#007700], [/color][color=#0000bb]True[/color][COLOR=#007700])
            If [/COLOR][COLOR=#0000bb]regKey Is Nothing Then
                regKey [/COLOR][color=#007700]= [/color][color=#0000bb]Registry[/color][color=#007700].[/color][color=#0000bb]LocalMachine[/color][color=#007700].[/color][color=#0000bb]OpenSubKey[/color][color=#007700]([/color][color=#dd0000]"SOFTWARE"[/color][color=#007700], [/color][color=#0000bb]True[/color][COLOR=#007700])
                [/COLOR][color=#0000bb]regKey[/color][color=#007700].[/color][color=#0000bb]CreateSubKey[/color][color=#007700]([/color][color=#dd0000]"AppSecurity"[/color][COLOR=#007700])
                [/COLOR][color=#0000bb]regKey[/color][color=#007700].[/color][color=#0000bb]Close[/color][COLOR=#007700]()
                If [/COLOR][color=#0000bb]WriteValue[/color][color=#007700]([/color][color=#0000bb]TrialPeriod[/color][color=#007700]) = [/color][COLOR=#0000bb]False Then
                    [/COLOR][color=#007700]Return [/color][COLOR=#dd0000]"setting fail."
                [/COLOR][color=#0000bb]End [/color][COLOR=#007700]If
            Else
                [/COLOR][color=#0000bb]strRet [/color][color=#007700]= [/color][color=#0000bb]GetValueFromReg[/color][color=#007700]([/color][color=#0000bb]TrialPeriod[/color][COLOR=#007700])
                Return [/COLOR][COLOR=#0000bb]strRet
            End [/COLOR][COLOR=#007700]If
        Catch [/COLOR][color=#0000bb]ex [/color][color=#007700]As [/color][COLOR=#0000bb]Exception
            [/COLOR][color=#007700]Return [/color][COLOR=#dd0000]""
        [/COLOR][color=#0000bb]End [/color][COLOR=#007700]Try
    [/COLOR][color=#0000bb]End [/color][COLOR=#007700]Function

    Public Function [/COLOR][color=#0000bb]GetValueFromReg[/color][color=#007700]([/color][color=#0000bb]ByVal mintTrialPeriod [/color][color=#007700]As [/color][color=#0000bb]Integer[/color][color=#007700]) As [/color][COLOR=#0000bb]String
        [/COLOR][COLOR=#dd0000]'لقراء القيمه من الريجسترى الخاصه بالبرنامج
        Dim strReturn As String = ""
        Dim regKey As RegistryKey
        Dim ver, Final As String
        regKey = Registry.LocalMachine.OpenSubKey("Software\AppSecurity", True) '[/COLOR][COLOR=#0000bb]فتح المسار فى الريجسترى وقراءه المعلومات
        ver [/COLOR][color=#007700]= [/color][color=#0000bb]regKey[/color][color=#007700].[/color][color=#0000bb]GetValue[/color][color=#007700]([/color][color=#dd0000]"System_In"[/color][color=#007700]) [/color][COLOR=#dd0000]'  قراء القيم من الريجسترى System_In=It get the value in (StartDate) & ";" & (LastDate) which is already stored in Encrypted  
        '[/COLOR][color=#0000bb]الصيغه[/color][COLOR=#007700].

        If [/COLOR][color=#0000bb]ver [/color][color=#007700]= [/color][color=#dd0000]"" [/color][color=#0000bb]Then [/color][COLOR=#dd0000]'اذا قام المستخدم بالتغيير يدويا فى المفتاح المكتوب فى الريجسترى
            Return "  لقد تم التلاعب ببعض مكونات البرنامج ليس لك الصلاحيه بالولوج الى البرنامج ."
        Else
            Final = funcDecrpt_Date(ver) '[/COLOR][COLOR=#0000bb]فك التشفير عن القيمه
            [/COLOR][color=#007700]If Final.[/color][color=#0000bb]Length[/color][color=#007700]() = [/color][color=#dd0000]"21" [/color][COLOR=#0000bb]Then
                Last [/COLOR][color=#007700]= Final.[/color][color=#0000bb]Substring[/color][color=#007700]([/color][color=#0000bb]11[/color][COLOR=#007700])
                [/COLOR][color=#0000bb]strOldDay [/color][color=#007700]= Final.[/color][color=#0000bb]Substring[/color][color=#007700]([/color][color=#0000bb]0[/color][color=#007700], [/color][color=#0000bb]2[/color][color=#007700]) [/color][COLOR=#dd0000]'عرض اليوم:"01"
                strOldMonth = Final.Substring(3, 2) '[/COLOR][color=#0000bb]عرض الشهر[/color][color=#007700]:[/color][COLOR=#dd0000]"01"
                [/COLOR][color=#0000bb]strOldYear [/color][color=#007700]= Final.[/color][color=#0000bb]Substring[/color][color=#007700]([/color][color=#0000bb]6[/color][color=#007700], [/color][color=#0000bb]4[/color][color=#007700]) [/color][COLOR=#dd0000]'عرض السنه:"2009"
                First = Final.Substring(0, 10) '[/COLOR][COLOR=#0000bb]لعرض وقت بدايه تشغيل البرنامج اول مره من الريجسترى

                RemainsDays [/COLOR][color=#007700]= [/color][color=#0000bb]DisplayApplicationStatus[/color][color=#007700]([/color][color=#0000bb]DiffDate[/color][color=#007700]([/color][color=#0000bb]strOldDay[/color][color=#007700], [/color][color=#0000bb]strOldMonth[/color][color=#007700], [/color][color=#0000bb]strOldYear[/color][color=#007700]), [/color][color=#0000bb]mintTrialPeriod[/color][COLOR=#007700])
                [/COLOR][color=#0000bb]mintSystem_UsedTrialDays [/color][color=#007700]= [/color][color=#0000bb]DiffDate[/color][color=#007700]([/color][color=#0000bb]strOldDay[/color][color=#007700], [/color][color=#0000bb]strOldMonth[/color][color=#007700], [/color][color=#0000bb]strOldYear[/color][COLOR=#007700])
                [/COLOR][color=#0000bb]Dim todaydate [/color][color=#007700]As [/color][COLOR=#0000bb]String
                todaydate [/COLOR][color=#007700]= [/color][color=#0000bb]Format[/color][color=#007700]([/color][color=#0000bb]Today[/color][color=#007700], [/color][color=#dd0000]"dd/MM/yyyy"[/color][COLOR=#007700])
                [/COLOR][COLOR=#dd0000]'للمقارنه بين تاريخ بدء تشغيل البرنامج اول مره وتاريخ اليوم
                If RemainsDays1 = 0 Then
                    Return "عفوا,لقد انتهت مده استخدامك للنسخه التجريبيه!!من فضلك قم بالترقيه الى النسخه الكامله."
                Else
                    Dim LastMonth As String
                    Dim CurrentMonth As String
                    LastMonth = Last.Substring(3, 2)
                    CurrentMonth = todaydate.Substring(3, 2)
                    If LastMonth > CurrentMonth Then
                        If Last = todaydate Or First > todaydate Then
                            Return "عفوا,لقد انتهت مده استخدامك للنسخه التجريبيه!!من فضلك قم بالترقيه الى النسخه الكامله."


                        Else
                            strReturn = GetLastAccessDateTime()
                            If strReturn <> "LogIn" Then
                                Return strReturn
                            Else
                                If RemainsDays1 = Nothing Then
                                    Return "123اليوم هو اخر يوم لاستخدامك النسخه التجريبيه."
                                Else
                                    Return "123 لديك  " & RemainsDays1 & " يوما لانتهاء نسختك التجريبيه."
                                End If
                            End If
                        End If
                    Else
                        If Last = todaydate Or Last < todaydate Or First > todaydate Then
                            Return "عفوا,لقد انتهت مده استخدامك للنسخه التجريبيه!!من فضلك قم بالترقيه الى النسخه الكامله."
                        Else
                            strReturn = GetLastAccessDateTime()
                            If strReturn <> "LogIn" Then
                                Return strReturn
                            Else
                                If RemainsDays1 = Nothing Then
                                    Return "123اليوم هو اخر يوم لاستخدامك النسخه التجريبيه ."
                                Else
                                    Return "123 لديك  " & RemainsDays1 & " يوما لانتهاء نسختك التجريبيه."
                                End If
                            End If
                        End If
                    End If
                End If
            Else
                Return "  لقد تم التلاعب ببعض مكونات البرنامج ليس لك الصلاحيه بالولوج الى البرنامج ."
            End If
        End If
    End Function

    Public Function funcEncrpt_Date(ByVal mDate As String) As String
        '[/COLOR][COLOR=#0000bb]هذه القيمه تستخدم لتشفير التاريخ المخزن فى الريجسترى باسم البرنامج
        Dim intI [/COLOR][color=#007700]As [/color][color=#0000bb]Integer [/color][color=#007700]= [/color][COLOR=#0000bb]0
        Dim mstrDate [/COLOR][color=#007700]As [/color][color=#0000bb]String [/color][color=#007700]= [/color][COLOR=#dd0000]""
        [/COLOR][COLOR=#007700]Try
            For [/COLOR][color=#0000bb]intI [/color][color=#007700]= [/color][color=#0000bb]1 To Len[/color][color=#007700]([/color][color=#0000bb]mDate[/color][COLOR=#007700])
                If [/COLOR][color=#0000bb]Mid[/color][color=#007700]([/color][color=#0000bb]Trim[/color][color=#007700]([/color][color=#0000bb]mDate[/color][color=#007700]), [/color][color=#0000bb]intI[/color][color=#007700], [/color][color=#0000bb]1[/color][color=#007700]) = [/color][color=#dd0000]"1" [/color][COLOR=#0000bb]Then
                    mstrDate [/COLOR][color=#007700]= [/color][color=#0000bb]mstrDate [/color][color=#007700]& [/color][color=#0000bb]ChrW[/color][color=#007700]([/color][color=#0000bb]Asc[/color][color=#007700]([/color][color=#0000bb]Mid[/color][color=#007700]([/color][color=#0000bb]Trim[/color][color=#007700]([/color][color=#0000bb]mDate[/color][color=#007700]), [/color][color=#0000bb]intI[/color][color=#007700], [/color][color=#0000bb]1[/color][color=#007700])) - [/color][color=#0000bb]5[/color][COLOR=#007700])
                Else
                    [/COLOR][color=#0000bb]mstrDate [/color][color=#007700]= [/color][color=#0000bb]mstrDate [/color][color=#007700]& [/color][color=#0000bb]ChrW[/color][color=#007700]([/color][color=#0000bb]Asc[/color][color=#007700]([/color][color=#0000bb]Mid[/color][color=#007700]([/color][color=#0000bb]Trim[/color][color=#007700]([/color][color=#0000bb]mDate[/color][color=#007700]), [/color][color=#0000bb]intI[/color][color=#007700], [/color][color=#0000bb]1[/color][color=#007700])) - [/color][color=#0000bb]10[/color][COLOR=#007700])
                [/COLOR][color=#0000bb]End [/color][COLOR=#007700]If
            [/COLOR][COLOR=#0000bb]Next
            [/COLOR][color=#007700]If [/color][color=#0000bb]InStr[/color][color=#007700]([/color][color=#0000bb]mstrDate[/color][color=#007700], [/color][color=#dd0000]"'"[/color][color=#007700]) <> [/color][COLOR=#0000bb]0 Then
                mstrDate [/COLOR][color=#007700]= [/color][color=#0000bb]mstrDate [/color][color=#007700]& [/color][COLOR=#dd0000]"'"
            [/COLOR][color=#0000bb]End [/color][COLOR=#007700]If
        Catch [/COLOR][color=#0000bb]ex [/color][color=#007700]As [/color][COLOR=#0000bb]Exception
        End [/COLOR][COLOR=#007700]Try
        Return [/COLOR][COLOR=#0000bb]mstrDate
    End [/COLOR][COLOR=#007700]Function

    Public Function [/COLOR][color=#0000bb]funcDecrpt_Date[/color][color=#007700]([/color][color=#0000bb]ByVal mDate [/color][color=#007700]As [/color][color=#0000bb]String[/color][color=#007700]) As [/color][COLOR=#0000bb]String
        [/COLOR][COLOR=#dd0000]'وهذه القيمه تسخدم لفك تشفير القيمه السابقه التى تم تشفيرها ويتم قرائتها من البرنامج من الريجسترى
        Dim intI As Integer = 0
        Dim mstrDate As String = ""
        Try
            For intI = 1 To Len(mDate)
                If Mid(Trim(mDate), intI, 1) = "," Then
                    mstrDate = mstrDate & ChrW(Asc(Mid(Trim(mDate), intI, 1)) + 5)
                Else
                    mstrDate = mstrDate & ChrW(Asc(Mid(Trim(mDate), intI, 1)) + 10)
                End If
            Next
        Catch ex As Exception
        End Try
        Return mstrDate
    End Function

    Public Function WriteValue(ByVal TrialPeriod As Integer) As Boolean
        '[/COLOR][COLOR=#0000bb]هذه تكتب القيمه الى الريجسترى باسم البرنامج والتاريخ الذى تم بدء البرنامج اول مره للمقارنه فيما بعد وحساب الوقت المستخدم
        Dim regKey [/COLOR][color=#007700]As [/color][COLOR=#0000bb]RegistryKey
        Dim SaveFirstAccessdate [/COLOR][color=#007700]As [/color][COLOR=#0000bb]String
        [/COLOR][COLOR=#007700]Try
            [/COLOR][color=#0000bb]regKey [/color][color=#007700]= [/color][color=#0000bb]Registry[/color][color=#007700].[/color][color=#0000bb]LocalMachine[/color][color=#007700].[/color][color=#0000bb]OpenSubKey[/color][color=#007700]([/color][color=#dd0000]"Software\AppSecurity"[/color][color=#007700], [/color][color=#0000bb]True[/color][COLOR=#007700])
            [/COLOR][color=#0000bb]StartDate [/color][color=#007700]= [/color][color=#0000bb]Format[/color][color=#007700]([/color][color=#0000bb]Today[/color][color=#007700], [/color][color=#dd0000]"dd/MM/yyyy"[/color][COLOR=#007700])
            [/COLOR][color=#0000bb]LastDate [/color][color=#007700]= [/color][color=#0000bb]Format[/color][color=#007700]([/color][color=#0000bb]Today[/color][color=#007700].[/color][color=#0000bb]AddDays[/color][color=#007700]([/color][color=#0000bb]TrialPeriod[/color][color=#007700]), [/color][color=#dd0000]"dd/MM/yyyy"[/color][COLOR=#007700])
            [/COLOR][color=#0000bb]FinalDate [/color][color=#007700]= [/color][color=#0000bb]funcEncrpt_Date[/color][color=#007700]([/color][color=#0000bb]StartDate[/color][color=#007700]) & [/color][color=#dd0000]";" [/color][color=#007700]& [/color][color=#0000bb]funcEncrpt_Date[/color][color=#007700]([/color][color=#0000bb]LastDate[/color][COLOR=#007700])
            [/COLOR][color=#0000bb]regKey[/color][color=#007700].[/color][color=#0000bb]SetValue[/color][color=#007700]([/color][color=#dd0000]"System_In"[/color][color=#007700], [/color][color=#0000bb]FinalDate[/color][color=#007700]) [/color][COLOR=#dd0000]'كتابه وقت بدء البرنامج ووقت انتهائه بالريجسترى
            SaveFirstAccessdate = Format(Today, "dd/MM/yyyy") & ";" & Format(TimeOfDay, "hh:mm:ss tt")
            regKey.SetValue("System_Used", funcEncrpt_Date(SaveFirstAccessdate)) '[/COLOR][COLOR=#0000bb]كتابه اخر استخدام للبرنامج اعتمادا على تاريخ ووقت النظام بالكمبيوتر
            regKey[/COLOR][color=#007700].[/color][color=#0000bb]SetValue[/color][color=#007700]([/color][color=#dd0000]"AppName"[/color][color=#007700], [/color][color=#dd0000]"AppSecurity"[/color][color=#007700]) [/color][COLOR=#dd0000]'كتابه اسم البرنامج فى الريجسترى  
            regKey.Close()
            Return True
        Catch ex As Exception
            Return False
        End Try
    End Function
    Public Function GetLastAccessDateTime() As String
        '[/COLOR][COLOR=#0000bb]تسخدم فى جلب المعلومات عن اخر مره تم استخدام البرنامج فيها خر استخدام بالتاريخ والوقت
        [/COLOR][COLOR=#007700]Try
            [/COLOR][color=#0000bb]Dim regKey [/color][color=#007700]As [/color][COLOR=#0000bb]RegistryKey
            regKey [/COLOR][color=#007700]= [/color][color=#0000bb]Registry[/color][color=#007700].[/color][color=#0000bb]LocalMachine[/color][color=#007700].[/color][color=#0000bb]OpenSubKey[/color][color=#007700]([/color][color=#dd0000]"SOFTWARE"[/color][color=#007700], [/color][color=#0000bb]True[/color][COLOR=#007700])
            [/COLOR][color=#0000bb]Dim LastAccess [/color][color=#007700]As [/color][COLOR=#0000bb]String
            regKey [/COLOR][color=#007700]= [/color][color=#0000bb]Registry[/color][color=#007700].[/color][color=#0000bb]LocalMachine[/color][color=#007700].[/color][color=#0000bb]OpenSubKey[/color][color=#007700]([/color][color=#dd0000]"Software\AppSecurity"[/color][color=#007700], [/color][color=#0000bb]True[/color][COLOR=#007700])
            [/COLOR][color=#0000bb]LastAccess [/color][color=#007700]= [/color][color=#0000bb]regKey[/color][color=#007700].[/color][color=#0000bb]GetValue[/color][color=#007700]([/color][color=#dd0000]"System_Used"[/color][color=#007700]) [/color][COLOR=#dd0000]'فك التشفير, funcDecrpt_Date(FinalDateTime))
            If LastAccess = "" Or LastAccess.Length <> "22" Then
                Return "لقد تم التلاعب ببعض مكونات البرنامج,ليس لديك الصلاحيه بالولوج الى البرنامج."
            Else
                Dim TodayDate As String
                TodayDate = (Format(Today, "dd/MM/yyyy") & ";" & Format(TimeOfDay, "hh:mm:ss tt"))
                If TodayDate < funcDecrpt_Date(LastAccess) Then
                    Return "لقد تم التلاعب فى ساعه النظام لديك يدويا,ليس لديك الصلاحيه بالولوج الى البرنامج."
                Else
                    Return "LogIn"
                End If
            End If
            regKey.Close()
        Catch ex As Exception
            Return ""
        End Try
    End Function
    Public Sub SaveLastAceessDateTime()
        '[/COLOR][COLOR=#0000bb]هذه تستخدم عند الخروج من البرنامج مع حفظ اخر استخدام للبرنامج بالوقت والتاريخ
        [/COLOR][COLOR=#007700]Try
            [/COLOR][color=#0000bb]Dim regKey [/color][color=#007700]As [/color][COLOR=#0000bb]RegistryKey
            regKey [/COLOR][color=#007700]= [/color][color=#0000bb]Registry[/color][color=#007700].[/color][color=#0000bb]LocalMachine[/color][color=#007700].[/color][color=#0000bb]OpenSubKey[/color][color=#007700]([/color][color=#dd0000]"SOFTWARE"[/color][color=#007700], [/color][color=#0000bb]True[/color][COLOR=#007700])
            [/COLOR][color=#0000bb]Dim SaveLastAccessdate [/color][color=#007700]As [/color][COLOR=#0000bb]String
            regKey [/COLOR][color=#007700]= [/color][color=#0000bb]Registry[/color][color=#007700].[/color][color=#0000bb]LocalMachine[/color][color=#007700].[/color][color=#0000bb]OpenSubKey[/color][color=#007700]([/color][color=#dd0000]"Software\AppSecurity"[/color][color=#007700], [/color][color=#0000bb]True[/color][COLOR=#007700])
            [/COLOR][color=#0000bb]SaveLastAccessdate [/color][color=#007700]= [/color][color=#0000bb]Format[/color][color=#007700]([/color][color=#0000bb]Today[/color][color=#007700], [/color][color=#dd0000]"dd/MM/yyyy"[/color][color=#007700]) & [/color][color=#dd0000]";" [/color][color=#007700]& [/color][color=#0000bb]Format[/color][color=#007700]([/color][color=#0000bb]TimeOfDay[/color][color=#007700], [/color][color=#dd0000]"hh:mm:ss tt"[/color][COLOR=#007700])
            [/COLOR][color=#0000bb]FinalDateTime [/color][color=#007700]= [/color][color=#0000bb]funcEncrpt_Date[/color][color=#007700]([/color][color=#0000bb]SaveLastAccessdate[/color][COLOR=#007700])
            [/COLOR][color=#0000bb]regKey[/color][color=#007700].[/color][color=#0000bb]SetValue[/color][color=#007700]([/color][color=#dd0000]"System_Used"[/color][color=#007700], [/color][color=#0000bb]FinalDateTime[/color][COLOR=#007700])
            [/COLOR][color=#0000bb]regKey[/color][color=#007700].[/color][color=#0000bb]Close[/color][COLOR=#007700]()
        Catch [/COLOR][color=#0000bb]ex [/color][color=#007700]As [/color][COLOR=#0000bb]Exception

        End [/COLOR][COLOR=#007700]Try
    [/COLOR][COLOR=#0000bb]End Sub

    [/COLOR][color=#007700]Public Function [/color][color=#0000bb]DisplayApplicationStatus[/color][color=#007700]([/color][color=#0000bb]ByVal pDaysSystem_Used [/color][color=#007700]As [/color][color=#0000bb]Integer[/color][color=#007700], [/color][color=#0000bb]ByVal pTotalDays [/color][color=#007700]As [/color][color=#0000bb]Integer[/color][color=#007700]) As [/color][COLOR=#0000bb]String
        [/COLOR][COLOR=#dd0000]'هذه تستخدم للتشييك على ان المستخدم قد احدث خطا عند تشغيل البرنامج بعد انتهاء المده التجريبيه او اقل من صفر يوم
        If pTotalDays < 0 Then
            Return "لقد حدث خطأ !لقد تجاوزت مده استخدامك عن المده المحدده, من فضلك قم بالاتصال بمطور البرنامج واخبره عن هذا الخطأ."
        End If

        '[/COLOR][COLOR=#0000bb]هذه تستخدم للتشييك على ان النسخه التجريبيه انتهت
        [/COLOR][color=#007700]If [/color][color=#0000bb]pDaysSystem_Used [/color][color=#007700]>= [/color][COLOR=#0000bb]pTotalDays Then
            [/COLOR][color=#007700]Return [/color][COLOR=#dd0000]"لقد انتهت مده استخدامك للنسخه التجريبيه !! من فضلك قم بالترقيه الى النسخه الكامله...!"
        [/COLOR][color=#0000bb]End [/color][COLOR=#007700]If

        [/COLOR][COLOR=#0000bb]Draw the bar
        RemainsDays1 [/COLOR][color=#007700]= [/color][color=#0000bb]pTotalDays [/color][color=#007700]- [/color][COLOR=#0000bb]pDaysSystem_Used
        [/COLOR][color=#007700]Return [/color][color=#dd0000]"لديك " [/color][color=#007700]+ ([/color][color=#0000bb]pTotalDays [/color][color=#007700]- [/color][color=#0000bb]pDaysSystem_Used[/color][color=#007700]).[/color][color=#0000bb]ToString [/color][color=#007700]+ [/color][COLOR=#dd0000]" يوم لانتهاء نسختك التجريبيه!!."
    [/COLOR][color=#0000bb]End [/color][COLOR=#007700]Function

    Public Function [/COLOR][color=#0000bb]DiffDate[/color][color=#007700]([/color][color=#0000bb]ByVal OrigDay [/color][color=#007700]As [/color][color=#0000bb]String[/color][color=#007700], [/color][color=#0000bb]ByVal OrigMonth [/color][color=#007700]As [/color][color=#0000bb]String[/color][color=#007700], [/color][color=#0000bb]ByVal OrigYear [/color][color=#007700]As [/color][color=#0000bb]String[/color][color=#007700]) As [/color][COLOR=#0000bb]Integer
        [/COLOR][COLOR=#007700]Try
            [/COLOR][color=#0000bb]Dim D1 [/color][color=#007700]As [/color][color=#0000bb]Date [/color][color=#007700]= New [/color][color=#0000bb]Date[/color][color=#007700]([/color][color=#0000bb]Convert[/color][color=#007700].[/color][color=#0000bb]ToInt32[/color][color=#007700]([/color][color=#0000bb]OrigYear[/color][color=#007700]), [/color][color=#0000bb]Convert[/color][color=#007700].[/color][color=#0000bb]ToInt32[/color][color=#007700]([/color][color=#0000bb]OrigMonth[/color][color=#007700]), [/color][color=#0000bb]Convert[/color][color=#007700].[/color][color=#0000bb]ToInt32[/color][color=#007700]([/color][color=#0000bb]OrigDay[/color][COLOR=#007700]))
            Return [/COLOR][color=#0000bb]Convert[/color][color=#007700].[/color][color=#0000bb]ToInt32[/color][color=#007700]([/color][color=#0000bb]DateDiff[/color][color=#007700]([/color][color=#0000bb]DateInterval[/color][color=#007700].[/color][color=#0000bb]Day[/color][color=#007700], [/color][color=#0000bb]D1[/color][color=#007700], [/color][color=#0000bb]DateTime[/color][color=#007700].[/color][color=#0000bb]Now[/color][COLOR=#007700]))
        Catch
            Return [/COLOR][COLOR=#0000bb]0
        End [/COLOR][COLOR=#007700]Try
    [/COLOR][color=#0000bb]End [/color][COLOR=#007700]Function
[/COLOR][color=#0000bb]End [/color][COLOR=#007700]Class  
[/COLOR][color=#0000bb][/color][/COLOR]

تحياتى وبالتوفيق