IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Période d'évaluation d'une application


Sujet :

VB.NET

  1. #1
    Membre éclairé
    Homme Profil pro
    ETUDE
    Inscrit en
    Septembre 2016
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : ETUDE
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 360
    Par défaut Période d'évaluation d'une application
    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?

  2. #2
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    En vitesse, sans trop réfléchir , puisque ça marche avec le clic du Bouton, pourquoi n'appelles-tu cette procédure au moment du Load ? Cela pourrait de dépanner :

    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
    ' ... ... ...
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
     
     
     
          ' j'ignore si tes 2 ligneqs 'Regsitry' sont toujours nécessaires ...
     
            'ouverture clé
            My.Computer.Registry.CurrentUser.OpenSubKey("Rodrigue")
            'lecture valeur
            Mavaleur = CStr(My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Rodrigue", "RodrigueValue", ToString))
     
     
          ' Je clique le Bouton par le code ...  :D)))
          Button1_Click(Me, Nothing)
     
        End Sub
     
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    ' ... ... ...
    Bonne journée,

  3. #3
    Membre éclairé
    Homme Profil pro
    ETUDE
    Inscrit en
    Septembre 2016
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : ETUDE
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 360
    Par défaut
    Bonjour Phil Rob Merci ça marche

  4. #4
    Membre éclairé
    Homme Profil pro
    ETUDE
    Inscrit en
    Septembre 2016
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : ETUDE
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 360
    Par défaut
    Bonsoir Phil Rob
    je m'excuse si je revient encore sur ce sujet
    j'aimerai savoir comment modifier
    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
        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!  Inserer la clé de licence!", "Période d'évaluation", MessageBoxButtons.OK, MessageBoxIcon.Error)
                    Mavaleur = "Terminer"
                    Me.Close()
                    Licencelogiciel.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
    dans Form_Load pour qu'il affiche le message uniquement lorsque la période d'essais arrive à son terme
    et redirige ver le tableau d'activation

  5. #5
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonne question ...

    Le code que tu avais placé dans le Form_Load ne fonctionnait pas et celui du Bouton fonctionnait. Je t'ai donc proposé d'enlever ton code du Form_Load et de le remplacer par Button1_Click(Me, Nothing).
    Je vais donc te proposer maintenant de faire ± le contraire ...

    En fait, ton code du Form_Load et celui du Button1_Click n'étaient pas exactement identiques. J'en déduis que le code du Form n'était pas correct tandis que celui du Bouton l'est.
    Si j'ai raison, en remplaçant l'appel du Bouton par SON code en entier, cela devrait fonctionner :
    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
    ' ... ... ...
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
     
     
     
          ' j'ignore si tes 2 ligneqs 'Regsitry' sont toujours nécessaires ...
     
            'ouverture clé
            My.Computer.Registry.CurrentUser.OpenSubKey("Rodrigue")
            'lecture valeur
            Mavaleur = CStr(My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Rodrigue", "RodrigueValue", ToString))
     
     
          ' Je clique le Bouton par le code ...  :D)))
         '*******   Button1_Click(Me, Nothing) ' je mets l'appel en commentaire
    ' reproduire ici le code du bouton :
     
            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!  Inserer la clé de licence!", "Période d'évaluation", MessageBoxButtons.OK, MessageBoxIcon.Error)
                    Mavaleur = "Terminer"
                    Me.Close()
                    Licencelogiciel.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
    J'espère que ceci t'aidera ...

  6. #6
    Membre éclairé
    Homme Profil pro
    ETUDE
    Inscrit en
    Septembre 2016
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : ETUDE
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 360
    Par défaut
    ce la fonctionne effectivement mais je ne souhaite que a chaque demmarrage de l'application
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MessageBox.Show("Période d'essai terminée!  Inserer la clé de licence!", "Période d'évaluation", MessageBoxButtons.OK, MessageBoxIcon.Error)
    s'affiche pendant la période d'évaluation

  7. #7
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Je ne comprends pas ... l'extrait de code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
                If Not loopIt Then
                    MessageBox.Show("Période d'essai terminée!  Inserer la clé de licence!", "Période d'évaluation", MessageBoxButtons.OK, MessageBoxIcon.Error)
                    Mavaleur = "Terminer"
                    Me.Close()
                    Licencelogiciel.Show()
                Else
                    MessageBox.Show("Vous pouvez continuer à utiliser l'application", "Période d'évaluation", MessageBoxButtons.OK, MessageBoxIcon.Information)
                    Mavaleur = "Continuer"
                    Exit Sub
                End If
    a pour objet de n'afficher le message que si la période d'essai est terminée. Dès lors, je ne vois pas le problème de tester à chaque démarrage.
    Si c'est le message "Vous pouvez continuer à utiliser l'application" que tu ne veux pas afficher à chaque fois, il te suffit de mettre la ligne en commentaire dans Form_Load.

    ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Construire une version d'évaluation d'une application
    Par mouned dans le forum Général Java
    Réponses: 3
    Dernier message: 23/01/2015, 16h38
  2. Réponses: 0
    Dernier message: 12/09/2014, 14h57
  3. Réponses: 5
    Dernier message: 08/11/2007, 23h21
  4. [Kylix] Execution d'une application hors de l'edi
    Par Sadam Sivaller dans le forum EDI
    Réponses: 1
    Dernier message: 20/04/2002, 23h22
  5. Réponses: 2
    Dernier message: 15/04/2002, 12h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo