ok ok, désolé je me suis trompé j'ai cru que mon message n'étais pas passé.
Ok, je vais ça merci.
ok ok, désolé je me suis trompé j'ai cru que mon message n'étais pas passé.
Ok, je vais ça merci.
ensuite je crée une date aléatoire c'est ça ? et ensuite comment je pourrais l'a copier dans la base des registres ?
ok, je vais consulter les liens que vous m'avez donné
je les ai pas vu désolé
pour les autres lancements (2ème, 3ème etc.) de l'application c'est quel évennement ?
on t'a donné les clés et maintenant c'est a toi de tout mettre en oeuvre.
Si tu as peur d'une modification d'une date système tu na qua te baser sur une date serveur comme ça T sur.
le prob, c'est que l'utilisateur doit être connecté à IInternet sinon on peut pas vérifier si C une application orientée Web c'est pas génant mais sinon vo mieux pas adopter cet solution
Je fais de mon mieux pour régler ça, mais je voudrais savoir coment on peux comparer deux dates ?
Par exemple : If date >= date_Debut + 30 jours then ...
Pour les traitement des dates, il existe l'unité DateUtils.
Sinon au lieu de te baser sur la date, tu peux te baser sur le nombre de fois. Même principe, tu stockes le nombre de fois (crypté) dans la base de registre, tu decrementes ce nombre à chaque lancement. L'appli ne marchera plus dès que ce nombre est <=0
Avec ça, tu n'aura plus le probleme du changement de date.
Oui ça aussi c'est une solution. Mais je comprends pas pourquoi on doit stocker dans la base de registre, pourquoi pas dans l'application elle-même ?
Application elle-même? tu veux dire dans un fichier, mais si je garde une copie de ce fichier après sa création et j'ecrase à chaque fois le fichier mis à jour !? tu vois ?
Je veux dire une variable, par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Procedure TForm1.FormCreate //la première utilisation// begin X:=1; end;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Procedure TForm1.Show begin X:=X+1; //valeur incrémenté à chaque utilisation// If X>=100 then showmessage('Fin de délai'); Application.Terminate; end;
Non
Le compteur de nombre de lancements ne peut pas être dans l'exe lui-même, pour la bonne et simple raison que l'exe ne peut être modifié qu'en compilant. Il n'est pas modifié d'un lancement à l'autre
Si tu ne veux pas utiliser la base de registres, les données devront être dans un fichier, mais cette solution me paraît moins fiable, comme le dit ilyes
As-tu pris le temps de regarder les liens vers la FAQ sur la base de registres ?
Choisir, c'est renoncer...
C'est vrais tu as raison, j'ai essayé et ça marche pas.
Maintenant, je suis obligé d'utiliser la base des registres.
J'ai vu les deux liens et j'ai une idée de quoi il s'agit donc je vais commenser tout de suite et si je trouve une difficulté je vous sollicite, je vous remercie les amis.
On en a déjà parlé avec outOfRange et on est tout les deux d'accord sur le fait que avec cette méthode c'est le nombre d'utilisation qui est limitée, j'entends par la le nombre de lancements, il faut jouer avec les dates système si tu veux absolumer limiter dans le temps et pas dans l'utilisation.Envoyé par walid_kerkoub
Bien a toi.
Bonjour,Envoyé par OutOfRange
Un exe peut s'automodifier :
Il y a dans un exe un secteur de donnée dans lequel on peut écrire sans modifier le code. D'ailleurs il est envisageable de modifier le code c'est un exercice intéressant d'exécutable qui s'autoregénère et s'automodifie en fonction du contexte.Aujourd'hui on se fait bloquer par les anti-virus, mais cette technique était souvent utiliser à l'âge de la place disque en Ko.Compter le nombre d'affichage ne paraît pas judicieux.
La base de registre est très facile à pister et très facile d'accès à Bidouille.
a+
Dans le vocabulaire des couturiers seulement, patron est synonyme de modèle.
Aymond d'Alost
Personnellement j'ai une petite technique pour m'assurer que l'utilisateur ne change pas la date système. Vous voulez savoir ? zetes curieux ?
1) Choisir des dossiers souvents utilisés ( Temporary internet files, Mes documents, certains répertoires de log de windows etc.
2) Au lancement de mon application je scan ces répertoires et je garde la date de modification ou création la plus récente. Ensuite je compare cette date avec la date système. Si la date système < la date du plus récent doc... alors on a un petit filou qui a reculé la date.
C'est pas infaillible mais c'est déjà bien pratique si le gars doit commencer a supprimer ses fichier temporaires, les logs de windows, ses documents récents etc pour lancer l'application... encore faut-t'il qu'il sache dans quel répertoire on va fouiller
La raison qui m'a pourssé à opter pour la comptabilisation du nombre d'utilisaions et non pas la durée, c'est que la manipulation et la comparaison des dates sont délicates. Je me suis dit, bon je commense par essayer de jouer sur le nombre d'utilisations histoire de me familiariser avec la base de registres ensuite finir par manipuler les dates. Pour Celà je voudrais que l'un d'entre vous mes amis, m'envoie un petit exemple sur la copie d'une valeur sur la base de registres et la faire incrémenter à chaque utilisation SVP.
Je compte sur vous.
Pour ce qui est de la comparaison de la date de modification des fichier souvent utiliser avec la date système, c'est une idée exraordinaire mais pour le moment je ne suis pas en meusure de jouer sur ça.
Merci à tous.
Voici pour te mettre sur la piste, un exemple de code d'initialisation d'une clé dans la base de registre
Avec un sur les fonctions que tu ne connais pas, tu devrais t'en sortir
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Reg := TRegistry.Create; try with Reg do begin RootKey := HKEY_LOCAL_MACHINE; if OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', False) then WriteString('Path','C:\WINDOWS\Winespw.exe'); end; finally Reg.Free; end;
L'exemple que je te donne inscrit une chaine de caractères
Le principe est le même pour un integer
Une sauvegarde de la BdR est fortement recommandée avant de faire quoi que ce soit
Et n'aies pas peur d'abuser de la FAQ et des liens que heider et moi-même t'avons signalés
Car c'est en cherchant et en franchissant progressivement les obstacles qu'on finit par atteindre le but recherché
Bon courage
Choisir, c'est renoncer...
Merci Beaucoup OutOfRange, j'ai réussi enfin en limitant le nombre d'utilisations et c'est comme-suit
//Initialisation le nbre d'utilisation à 1 à la 1ère utilisation//
procedure TForm1.FormCreate(Sender: TObject);
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
with Reg do begin
RootKey := HKEY_LOCAL_MACHINE;
if OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', False)
then WriteInteger('NB',1);
end;
finally
Reg.Free;
end;
end;
//Nombre d'utilisations incrémenté à chaque fermeture de l'application//
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
with Reg do begin
RootKey := HKEY_LOCAL_MACHINE;
if OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', False)
then
begin
WriteInteger('NB',ReadInteger('NB')+1);
end;
end;
finally
Reg.Free;
end;
end;
//Teste du nbre d'utilisations à chaque lancement//
procedure TForm1.FormShow(Sender: TObject);
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
with Reg do begin
RootKey := HKEY_LOCAL_MACHINE;
if OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', False)
then
begin
If ReadInteger('NB')>=100 then
begin
showMessage('Crédit épuisé');
Application.Terminate;
end;
end;
end;
finally
Reg.Free;
end;
end;
Le problème n'est pas encore résolu puisque celà limite seulement le nombre d'utilisations pas la durée, je vais essayer de le faire avec les dates et si je trouve un problème je vous le signale.
Merci à tous
j'utilise exemod, une librairie que j'ai trouvé ici
http://www.geocities.com/gacarpenter386/
Les programmes dans lesquels je l'utilise passe sans probleme mon antivirus.
Grâce à elle on peut stocker dans l'exe vraiment tout ce que l'on veut.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager