تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
اريد طريقة الغاء البرنامج بعد وقت محدد
#1
السلام عليكم


شباب انا عاوز طريقة انه البرنامج ينلغي بعد فتره


اوضح اكثر

انا عندي برنامج

سويته اليوم ابيه بعد 5 ايام يتقفل نهائي ويجيني مسج بوكس يقول لي تم الغاء البرنامج



وشكرا


ارجو الرد
الرد }}}
تم الشكر بواسطة:
#2
رد يا اخوان
الرد }}}
تم الشكر بواسطة:
#3
إقتباس : Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
'اولا يتم عمل ملف فى نسخة الويندوز ويتم قراءة هذا الكود بهذة الطريقة

Dim KeyName As String = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
Dim valueName As String = "manduh"
Dim inwin1 As String = "in"
Dim Value As Object = inwin
inwin = Registry.GetValue(KeyName, valueName, Value.ToString())
'اذا لم يكن هناك ملف فىالنسخة يتم الاتى
If inwin = "" Then
'هنا تم عمل تاريخ نهاية النسخة بعد 15يوما
Dim MpTryApi As String = Now.AddDays(15D)
'تم عمل جدول فى قاعدة البيانات يتم تخزين فية التاريخ
Dim datess As String
If Not DataAccess.con.State = ConnectionState.Open Then
DataAccess.con.Open()
End If
Dim da1 As New OleDbDataAdapter("SELECT * from testing_pro where (id=1) ", DataAccess.con)
Dim dt1 As New DataTable
da1.Fill(dt1)
datess = dt1.Rows(0).Item("datess").ToString
DataAccess.con.Close()

'تم استعراض التاريخ الموجود فى قاعدة البيانات
'وعند عمل قادة البيانات يتم عمل اول صف ويشمل على خانة التاريخ خالية
'فى حالة ان التاريخ يكون فارغ يتم الاتى
If datess = "" Then
'فى حالة انه فارغ يتم اضافة تاريخ اليوم وهذا التاريخ عندما يتم تشغيل البرنامج الاول مرة

Dim idtest As String = "1"
If Not DataAccess.con.State = ConnectionState.Open Then
DataAccess.con.Open()
End If
DataAccess.cmd.Connection = DataAccess.con
DataAccess.cmd.CommandText = "UPDATE testing_pro SET datess='" & datenaw & "' WHERE id=" & idtest
DataAccess.cmd.ExecuteNonQuery()
DataAccess.con.Close()
'فى حالة ان التاريخ موجود يكون استخدم البرنام من قبل
'يتم اضافة سطر جديد
ElseIf datess >= Date.Today.ToString("yyyy/MM/dd") Then

If Not DataAccess.con.State = ConnectionState.Open Then
DataAccess.con.Open()
End If
DataAccess.cmd.Connection = DataAccess.con
DataAccess.cmd.CommandText = "INSERT INTO testing_pro( datess)" & _
" VALUES ( '" & datenaw & "')"
DataAccess.cmd.ExecuteNonQuery()
DataAccess.con.Close()
'بعد ذلك يتم احتساب عدد الايام المستخدمة للبرنامج عن طريق حساب عدد الايام من التواريخ الموجود فى قاعدة البيانات
Dim dateend As DateTime
If Not DataAccess.con.State = ConnectionState.Open Then
DataAccess.con.Open()
End If

Dim da2 As New OleDbDataAdapter("SELECT * from testing_pro order by id ", DataAccess.con)
Dim dt2 As New DataTable
da2.Fill(dt2)
dateend = dt2.Rows(0).Item("datess").ToString
DataAccess.con.Close()

Dim danew As Integer

danew = DateDiff(DateInterval.Day, CDate(dateend), CDate(datenaw))
'فى حالة ان عدد الايام 15 ايام يتم الاتى

If danew = "15" Then
'ويتم هنا اضافة قيمة فى نسخة الويندوز
Value = inwin1
Registry.SetValue(KeyName, valueName, Value)
MsgBox("انتهت الفترة التجريبية للبرنامج")
Me.Close()
Return
'فى حالة ان عدد الايام أكبر 16 ايام يتم الاتى

ElseIf danew > "16" Then
'ويتم هنا اضافة قيمة فى نسخة الويندوز
Value = inwin1
Registry.SetValue(KeyName, valueName, Value)
MsgBox("انتهت الفترة التجريبية للبرنامج")
Me.Close()
Return
' عندما يقوم العميل بتغيير التاريخ الى اقل من التاريخ الاول يتم الاتى

ElseIf danew < "0" Then
'ويتم هنا اضافة قيمة فى نسخة الويندوز
Value = inwin1
Registry.SetValue(KeyName, valueName, Value)
MsgBox("انتهت الفترة التجريبية للبرنامج")
Me.Close()
Return
ElseIf danew < "15" Then
'الان يجد البرنامج ان عدد الايام اقل من 15 يوما
'واجهتى مشكلة هنا انه عندما يقوم العميل باعادة تغير التاريخ قبل تشغيل البرنامج
'يستطيع تشغيل البرنامج اكثر من 15 يوما
'تم هنا الحماية ايضا عن طريق عدد مرات تشغيل البرنامج
'من خلال احتساب عدد مراة العمل الافتراضية للبرنامج

Dim countdate As Integer = "0"
If Not DataAccess.con.State = ConnectionState.Open Then
DataAccess.con.Open()
End If
Dim da3 As New OleDbDataAdapter("SELECT COUNT(datess) AS datess FROM testing_pro ", DataAccess.con)
Dim dt3 As New DataTable
da3.Fill(dt3)
countdate = dt3.Rows(0).Item("datess").ToString
DataAccess.con.Close()
'تم احتساب مجموع عمليات الدخول على البرنامج من خلال جمع عدد التاوريخ الموجود فى قاعدة البيانات

'وليكون عدد الدخول على البرنامج 3مرات فى اليوم يكون المجموع مرات الدخول اسناء الفترة التجريبية 45مرة

If countdate = "45" Then
Value = inwin1
Registry.SetValue(KeyName, valueName, Value)
MsgBox("انتهت الفترة التجريبية للبرنامج")
Me.Close()
Application.Exit()
ElseIf countdate < "30" Then
MsgBox(countdate)
Form1.Show()
Me.Hide()
End If
End If

End If
lodeng.Close()
ElseIf inwin = "Micros" Then
MsgBox(" عفوا تم استخدام النسخة التجريبية من قبل")
Application.Exit()

End If
End Sub

ملحوظة :-
الرد }}}
تم الشكر بواسطة: السحاب , لسه مبتدئ
#4
(24-05-14, 10:13 PM)alktab كتب :
إقتباس : Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
'اولا يتم عمل ملف فى نسخة الويندوز ويتم قراءة هذا الكود بهذة الطريقة

Dim KeyName As String = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
Dim valueName As String = "manduh"
Dim inwin1 As String = "in"
Dim Value As Object = inwin
inwin = Registry.GetValue(KeyName, valueName, Value.ToString())
'اذا لم يكن هناك ملف فىالنسخة يتم الاتى
If inwin = "" Then
'هنا تم عمل تاريخ نهاية النسخة بعد 15يوما
Dim MpTryApi As String = Now.AddDays(15D)
'تم عمل جدول فى قاعدة البيانات يتم تخزين فية التاريخ
Dim datess As String
If Not DataAccess.con.State = ConnectionState.Open Then
DataAccess.con.Open()
End If
Dim da1 As New OleDbDataAdapter("SELECT * from testing_pro where (id=1) ", DataAccess.con)
Dim dt1 As New DataTable
da1.Fill(dt1)
datess = dt1.Rows(0).Item("datess").ToString
DataAccess.con.Close()

'تم استعراض التاريخ الموجود فى قاعدة البيانات
'وعند عمل قادة البيانات يتم عمل اول صف ويشمل على خانة التاريخ خالية
'فى حالة ان التاريخ يكون فارغ يتم الاتى
If datess = "" Then
'فى حالة انه فارغ يتم اضافة تاريخ اليوم وهذا التاريخ عندما يتم تشغيل البرنامج الاول مرة

Dim idtest As String = "1"
If Not DataAccess.con.State = ConnectionState.Open Then
DataAccess.con.Open()
End If
DataAccess.cmd.Connection = DataAccess.con
DataAccess.cmd.CommandText = "UPDATE testing_pro SET datess='" & datenaw & "' WHERE id=" & idtest
DataAccess.cmd.ExecuteNonQuery()
DataAccess.con.Close()
'فى حالة ان التاريخ موجود يكون استخدم البرنام من قبل
'يتم اضافة سطر جديد
ElseIf datess >= Date.Today.ToString("yyyy/MM/dd") Then

If Not DataAccess.con.State = ConnectionState.Open Then
DataAccess.con.Open()
End If
DataAccess.cmd.Connection = DataAccess.con
DataAccess.cmd.CommandText = "INSERT INTO testing_pro( datess)" & _
" VALUES ( '" & datenaw & "')"
DataAccess.cmd.ExecuteNonQuery()
DataAccess.con.Close()
'بعد ذلك يتم احتساب عدد الايام المستخدمة للبرنامج عن طريق حساب عدد الايام من التواريخ الموجود فى قاعدة البيانات
Dim dateend As DateTime
If Not DataAccess.con.State = ConnectionState.Open Then
DataAccess.con.Open()
End If

Dim da2 As New OleDbDataAdapter("SELECT * from testing_pro order by id ", DataAccess.con)
Dim dt2 As New DataTable
da2.Fill(dt2)
dateend = dt2.Rows(0).Item("datess").ToString
DataAccess.con.Close()

Dim danew As Integer

danew = DateDiff(DateInterval.Day, CDate(dateend), CDate(datenaw))
'فى حالة ان عدد الايام 15 ايام يتم الاتى

If danew = "15" Then
'ويتم هنا اضافة قيمة فى نسخة الويندوز
Value = inwin1
Registry.SetValue(KeyName, valueName, Value)
MsgBox("انتهت الفترة التجريبية للبرنامج")
Me.Close()
Return
'فى حالة ان عدد الايام أكبر 16 ايام يتم الاتى

ElseIf danew > "16" Then
'ويتم هنا اضافة قيمة فى نسخة الويندوز
Value = inwin1
Registry.SetValue(KeyName, valueName, Value)
MsgBox("انتهت الفترة التجريبية للبرنامج")
Me.Close()
Return
' عندما يقوم العميل بتغيير التاريخ الى اقل من التاريخ الاول يتم الاتى

ElseIf danew < "0" Then
'ويتم هنا اضافة قيمة فى نسخة الويندوز
Value = inwin1
Registry.SetValue(KeyName, valueName, Value)
MsgBox("انتهت الفترة التجريبية للبرنامج")
Me.Close()
Return
ElseIf danew < "15" Then
'الان يجد البرنامج ان عدد الايام اقل من 15 يوما
'واجهتى مشكلة هنا انه عندما يقوم العميل باعادة تغير التاريخ قبل تشغيل البرنامج
'يستطيع تشغيل البرنامج اكثر من 15 يوما
'تم هنا الحماية ايضا عن طريق عدد مرات تشغيل البرنامج
'من خلال احتساب عدد مراة العمل الافتراضية للبرنامج

Dim countdate As Integer = "0"
If Not DataAccess.con.State = ConnectionState.Open Then
DataAccess.con.Open()
End If
Dim da3 As New OleDbDataAdapter("SELECT COUNT(datess) AS datess FROM testing_pro ", DataAccess.con)
Dim dt3 As New DataTable
da3.Fill(dt3)
countdate = dt3.Rows(0).Item("datess").ToString
DataAccess.con.Close()
'تم احتساب مجموع عمليات الدخول على البرنامج من خلال جمع عدد التاوريخ الموجود فى قاعدة البيانات

'وليكون عدد الدخول على البرنامج 3مرات فى اليوم يكون المجموع مرات الدخول اسناء الفترة التجريبية 45مرة

If countdate = "45" Then
Value = inwin1
Registry.SetValue(KeyName, valueName, Value)
MsgBox("انتهت الفترة التجريبية للبرنامج")
Me.Close()
Application.Exit()
ElseIf countdate < "30" Then
MsgBox(countdate)
Form1.Show()
Me.Hide()
End If
End If

End If
lodeng.Close()
ElseIf inwin = "Micros" Then
MsgBox(" عفوا تم استخدام النسخة التجريبية من قبل")
Application.Exit()

End If
End Sub

ملحوظة :-



بسم الله الرحمان الرحيم

الله يزيدك علم انشاء الله


بس حاي اسال الحين هذا الكود احطه في الفورم لود ام ان احطه في مكان ثاني

وثاني شي هل انسخ الكود كما هو او اشيل الكلام العربي الي فيه ولو تقدر اخوي صمم ليه على 7 ايام وعطني الكود جاهز اذا ما عليك امر وشكرا
الرد }}}
تم الشكر بواسطة:
#5
تفضل هذا كود اسهل من السابق

ادرج المكتبة
إقتباس :Imports Microsoft.Win32

ومن ثم ضع هذا الكود في اللود او البتن المهم يجب تفعيله عند تشغيل البرنامج !

إقتباس : Dim regKey As String

regKey = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\MyAppvBsQ", "TRI", Nothing)

If (regKey Is Nothing) Then

Dim MpTryApi As String = Now.AddDays(30D)
My.Computer.Registry.SetValue("HKEY_CURRENT_USER\MyAppvBsQ", "TRI", MpTryApi)

ElseIf regKey = Date.Now Then

MsgBox("انتهت الفترة التجريبية للبرنامج")
Me.Close()
End If

ويتم التحكم بالايام من خلال هذا الكود

Dim MpTryApi As String = Now.AddDays(30D)

لاحظ اللون الاحمر هذا عدد الايام ويمكن تعديلها للفترة التي تريدها

الكود يقوم بحفظ تاريخ استخدام البرنامج وإذا قضت الفترة المحددة يتوقف عن العمل
الرد }}}
تم الشكر بواسطة: ماستر
#6
إقتباس :مرحبتين تلاته
إلى : alktab
السلام عليكم
اخى الكريم
كيف تقوم باادراج هذه المكتبه بالظبط لانى مبتدأ
http://vb4arb.com/vb/thread-2997.html

تفضل

الرد }}}
تم الشكر بواسطة: aftfm , ماستر , الشاكي لله
#7
وهذا كود آخر
منقول


كود :
Dim T As Boolean
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        T = False
        Dim RegX As Microsoft.Win32.RegistryKey
        RegX = Microsoft.Win32.Registry.CurrentUser

        Dim S As String() = RegX.GetSubKeyNames
        For Each A As String In S
            If A = "smp3" Then
                T = True
            End If
        Next
        If T = True Then RegX = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("smp3", True)
        Dim x As Integer = RegX.GetValue("val")
        x = x + 1
        RegX.SetValue("val", x)
        If x = 5 Or x > 5 Then
            MsgBox("لقد انتهت مدتك لاستخدام البرنامج , يرجى الاتصال بفريق الدعم لمعرفة كيفية الشراء")
            Application.Exit()

        Else

            RegX = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("smp3")
            RegX.SetValue("val", 1)
        End If

    End Sub
الرد }}}
تم الشكر بواسطة: الشاكي لله
#8
(25-05-14, 08:32 PM)alktab كتب :
إقتباس :مرحبتين تلاته
إلى : alktab
السلام عليكم
اخى الكريم
كيف تقوم باادراج هذه المكتبه بالظبط لانى مبتدأ
http://vb4arb.com/vb/thread-2997.html

تفضل


اخوي للاسف ما يضبط الكود

كود :
Dim regKey As String

        regKey = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\MyAppvBsQ", "TRI", Nothing)
        If (regKey Is Nothing) Then
            Dim MpTryApi As String = Now.AddSeconds(30S)
            My.Computer.Registry.SetValue("HKEY_CURRENT_USER\MyAppvBsQ", "TRI", MpTryApi)
        ElseIf regKey = Date.Now Then
            MsgBox("انتهت الفترة التجريبية للبرنامج")
            Me.Close()
        End If

لو تلاحض اني غيرات AddDays الى AddSeconds وحطيت بدال m حطيت s والكود طلع بدون اخطاء لاكن مافي مفعول وتاكدت من المكتبه ولا فاد وش الحل ضروري
الرد }}}
تم الشكر بواسطة:
#9
أنصحك أن تبتعد عن استخدام الريجستري.....تماما
لأنه و غالبا .....هذا هو اول مكان يبحث فيه الهاكرز

هناك فكرة أفضل لحماية البرامج

و هي أن تستخدم ملف تحفظ فيه البيانات و هذا ما يفعله الجميع الأن

و النقطة الهامة هي :

أنك تنسخ من هذا الملف اكتر من نسخة في اكتر من مكان علي جهاز العميل

و هذه النسخ ستعمل بمثابة Shadow للنسخة الاصلية من الملف
و بالتالي تستطيع أن تتأكد أكثر من مرة أن برنامجك تم تفعيله بشكل جيد.
أو أن البرنامج صلاحيته قد انتهت و بالتالي تقوم بإغلاق البرنامج الخاص بك

أما بخصوص الصلاحية المؤقتة عليك أن تسترجع الوقت او التاريخ الذي تم فيه إنشاء Directory الذي سيكون فيه برنامجك
ثم تضيف له وقت معين أنت تحدده
فإن كان الوقت الاجمالي رقم معين يمكن حينها ان تفعل ما تشاء
إما تغلق البرنامج أو ترسل رسالة للمستخدم أو ما تراه مناسبا لك في حينها
الرد }}}
تم الشكر بواسطة:
#10
(26-05-14, 01:16 PM)hassan كتب :
(25-05-14, 08:32 PM)alktab كتب :
إقتباس :مرحبتين تلاته
إلى : alktab
السلام عليكم
اخى الكريم
كيف تقوم باادراج هذه المكتبه بالظبط لانى مبتدأ
http://vb4arb.com/vb/thread-2997.html

تفضل


اخوي للاسف ما يضبط الكود

كود :
Dim regKey As String

        regKey = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\MyAppvBsQ", "TRI", Nothing)
        If (regKey Is Nothing) Then
            Dim MpTryApi As String = Now.AddSeconds(30S)
            My.Computer.Registry.SetValue("HKEY_CURRENT_USER\MyAppvBsQ", "TRI", MpTryApi)
        ElseIf regKey = Date.Now Then
            MsgBox("انتهت الفترة التجريبية للبرنامج")
            Me.Close()
        End If

لو تلاحض اني غيرات AddDays الى AddSeconds وحطيت بدال m حطيت s والكود طلع بدون اخطاء لاكن مافي مفعول وتاكدت من المكتبه ولا فاد وش الحل ضروري

خطأ بسيط في المقارنة فقط هنا
E
إقتباس :lseIf regKey = Date.Now Then
بدله الى
إقتباس : ElseIf regKey > Now Then
وهو مقارنة التاريخ المسجل للبرنامج إذا وجده اكبر من تاريخ اليوم سوف ينهي عمل البرنامج

شاهد الشرح هنا
http://www.gulfup.com/?1B8MQh


المثال مرفق بعد التعديل


الملفات المرفقة
.rar   WindowsApplication1.rar (الحجم : 61.44 ك ب / التحميلات : 150)
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
Exclamation [سؤال] كيف يمكن الغاء السوال عند الكتابة على ملف موجود dell 0 48 19-03-24, 01:23 AM
آخر رد: dell
  مشكلة عند نقل البرنامج من فيجوال 2013 الى فيجوال 2017 strongriseman 5 148 12-03-24, 10:37 AM
آخر رد: strongriseman
  محتاج طريقة لتنسيق نص الرسالة المرسلة إلى الواتس اب new_programer 2 163 04-03-24, 07:15 AM
آخر رد: new_programer
  محتاج تشفير فيديو وتشغلية عن طريق البرنامج فقط new_programer 1 112 22-02-24, 12:09 PM
آخر رد: AHMED213
  طريقة اجراء نسخة احتياطية و استرجاعها ؟ Osama NY 2 461 07-02-24, 08:59 PM
آخر رد: Kamil
  مطلوب كود الطباعة لهذا البرنامج melad2002 2 234 13-01-24, 06:42 PM
آخر رد: melad2002
  مشكلة تعليق البرنامج في حال عدم وجود ماسح ضوئي متصل بالكمبيوتر صالح عبدالله 1 210 09-01-24, 10:51 PM
آخر رد: صالح عبدالله
  اريد طباعة الباركود المحدد فقط مع الكمية new_programer 5 430 09-01-24, 08:40 PM
آخر رد: new_programer
  ماهي طريقة نقل محتويات checkedlistbox الى داتاقريدفيو صالح عبدالله 3 253 06-01-24, 03:20 PM
آخر رد: Kamil
  [VB.NET] استخلاص جزء محدد من نص وإضافته إلى بداية النص ؟ AmeenRashed 2 213 02-01-24, 10:06 AM
آخر رد: AmeenRashed

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم