Bonjour le forum je voudrai programmer une période d'évaluation de mon application pour cela j'ai trouver un code sur internet
qui répond à mes attente.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
Imports System.ComponentModel
 
Public Class Form1
    Dim Mavaleur As String
    Dim chemin As String
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Mavaleur = "Continuer"
        'ouverture clé
        My.Computer.Registry.CurrentUser.OpenSubKey("Rodrigue")
        'lecture valeur
        Mavaleur = CStr(My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Rodrigue", "RodrigueValue", ToString))
        If Mavaleur = "Terminer" Then
            MessageBox.Show("Période d'essai terminée! fermeture de l'application!", "Période d'évaluation", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Mavaleur = "Terminer"
            Me.Hide()
            Form2.Show()
        End If
    End Sub
 
    Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
        'création clé
        My.Computer.Registry.CurrentUser.CreateSubKey("Rodrigue")
        'ajout valeur. 
        My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Rodrigue",
          "RodrigueValue", Mavaleur)
    End Sub
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim aCount As Integer = 0
        Dim loopIt As Boolean = True
        'My.Settings.Reset() 'Ceci est ici pour le soutien de la conception ... sinon vous ne recevrez pas votre application pour l'exécuter encore
        Do While loopIt
            MessageBox.Show(String.Format("Vérification de date: {0}.", Date.Now.AddDays(aCount)), "Période d'évaluation", MessageBoxButtons.OK, MessageBoxIcon.Information)
            loopIt = CheckDate(Date.Now.AddDays(aCount))
            If Not loopIt Then
                MessageBox.Show("Période d'essai terminée! fermeture de l'application!", "Période d'évaluation", MessageBoxButtons.OK, MessageBoxIcon.Error)
                Mavaleur = "Terminer"
                Me.Hide()
                Form2.Show()
            Else
                MessageBox.Show("Vous pouvez continuer à utiliser l'application", "Période d'évaluation", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Mavaleur = "Continuer"
                Exit Sub
            End If
            aCount += 1
        Loop
    End Sub
    Private Function CheckDate(ByVal dateToCheck As Date) As Boolean
        'En réalité, checkdate obtiendrait la date (date actuelle) elle-même et ne pas l'avoir adoptée en
        Dim retValue As Boolean = False 'par défaut à false
        Dim usageDatesLeft As Int16 = 30 ' réglez ce paramètre sur le nombre de jours + 1 d'accès aux applications
 
        'Hash the date
        Dim hashedDate As String = HashDate(dateToCheck)
        'Vérifiez si la valeur de hachage existe dans les UsageDates 
 
        'Initialiser le récipient si nécessaire
        If My.Settings.UsageDates Is Nothing Then
            My.Settings.UsageDates = New System.Collections.Specialized.StringCollection
        End If
 
        If My.Settings.UsageDates.Contains(hashedDate) Then
            'Alors nous sommes ok ... il a déjà été vérifié
            retValue = True
            usageDatesLeft = CShort(usageDatesLeft - My.Settings.UsageDates.Count)
 
            'Bilan de santé d'esprit ... si la date système est sauvegardé à une date précédente dans la liste, mais pas a la dernière date
            If usageDatesLeft <= 0 AndAlso My.Settings.UsageDates.IndexOf(hashedDate) <> My.Settings.UsageDates.Count - 1 Then
                retValue = False
            End If
        Else
            If My.Settings.UsageDates.Count < usageDatesLeft Then
                My.Settings.UsageDates.Add(hashedDate)
            End If
            usageDatesLeft = CShort(usageDatesLeft - My.Settings.UsageDates.Count)
 
 
            'Si non, ajouter le nombre de jours ouverts
            If usageDatesLeft > 0 Then
                retValue = True
            Else
                'Si non dites  a l'utilisateur, l'application de sortie
                retValue = False
            End If
 
        End If
        'Affiche à l'utilisateur le nombre de jours restant
        MessageBox.Show(String.Format("Vous avez {0} jour (s) restant.", usageDatesLeft), "Période d'évaluation", MessageBoxButtons.OK, MessageBoxIcon.Information)
        If usageDatesLeft = 0 Then
            retValue = False
        End If
        Return retValue
    End Function
    Private Function HashDate(ByVal dateToHash As Date) As String
        'Obtenez un objet de hachage
        Dim hasher As System.Security.Cryptography.MD5 = System.Security.Cryptography.MD5.Create()
        ' faire une date longue et hacher
        Dim data As Byte() = hasher.ComputeHash(System.Text.Encoding.Default.GetBytes(dateToHash.ToLongDateString()))
        'Créer un nouveau StringBuilder pour recueillir les octets; 
        'Et créer une chaîne.
        Dim sBuilder As New System.Text.StringBuilder()
        'Boucle dans chaque octet de données haché; 
        'Et formater chacun comme une chaîne hexadécimale.
        Dim idx As Integer
        For idx = 0 To data.Length - 1
            sBuilder.Append(data(idx).ToString("x2"))
        Next idx
        Return sBuilder.ToString
    End Function
End Class
comment modifier dans l'événement Form1_Load pour que à la fin de l'évaluation tous les tableaux actif se ferme et Form2 seule s'ouvre pour permettre d’insérer la clé de licence car avec les modification que j'ai apporter sur le code tel-que vous pouvez le constater Form1 et Form2 s'affiche au même moment or en cliquant sur Button1_Click cela fonctionne comme je souhaite?