2009-11-27 24 views
4

Je développe une bibliothèque shareware sdk-like (utilisant C++). La bibliothèque est une DLL simple fournit quelques fonctions. Donc, ma première question est quels types d'essais sont possibles pour dll simple? Je ne veux pas couper la fonctionnalité de la DLL d'évaluation, donc j'ai tendance à utiliser le contre-la-montre.Comment configurer un essai pour une bibliothèque de liens dynamiques?

Je comprends à peu près comment suivre le temps d'utilisation de la lib, donc la deuxième question est de savoir comment indiquer l'expiration de la période d'essai?

Il y a deux idées pour le présent:

  1. Après la période d'évaluation expire, la bibliothèque ne chargeait pas.

    ou

  2. Après la période d'évaluation expire, la bibliothèque chargera avec succès, mais affichera une sorte de Nag-écran.

Mais les deux semblent assez rudes, alors pourriez-vous s'il vous plaît donner quelques conseils à ce sujet?

Merci!

+0

Merci à tous pour vos réponses! J'ai décidé d'utiliser la méthode suivante: autoriser le chargement de la bibliothèque et renvoyer le code d'erreur lorsque l'application appelle l'une de mes fonctions dll si l'essai expire. – DenisL

Répondre

1

Vous pouvez déclencher une erreur de "licence d'évaluation expirée" lorsque vous appelez l'une de vos fonctions DLL. C'est plus explicite et compréhensible par l'utilisateur.

my2cents 
1

Dans (1) vous devrez échouer dans DllMain() à l'expiration. Ce n'est pas très bon si votre DLL était présente dans la table d'importation du programme qui utilise votre DLL.

Dans (2) vous avez plus de choix et il est plus amical à mon humble avis.

Il suffit de définir un indicateur interne à l'expiration et d'afficher une boîte de dialogue.

Si l'utilisateur continue à appeler vos fonctions exportées, vous vérifiez l'indicateur et échouez tous les appels de fonction à votre DLL.

Idéalement, si vous avez une fonction init dans votre DLL, affichez la boîte de dialogue d'expiration lorsque init() est appelée et renvoyez un code spécial pour que l'implémenteur connaisse et existe également son programme.

HTH, Elias

1

Si je vous comprends bien après la période d'expiration, vous ne voulez pas que les gens appellent les fonctions dans la table d'exportation de votre dll.

S'il vous plaît noter que si votre Dll charge avec succès les gens seront toujours en mesure d'appeler votre code Dll, même si il ya un écran nag affiché. Ainsi, vous devrez garder toutes vos fonctions exportées par le contrôle du temps. A) Les développeurs n'aiment pas que les bibliothèques tierces fassent apparaître leurs propres écrans harcelants. b) Que faire si vous lib est utilisé dans une application non UI (par exemple, utilisé dans un service qui n'a pas d'interaction avec le bureau)? À mon avis, le mieux serait de permettre le chargement de la bibliothèque (pour les cas où votre DLL est dans le IAT des autres modules), mais toutes les fonctions exportées dans votre interface renvoient un code d'erreur si le test a expiré.Ainsi, l'application utilisant votre bibliothèque peut choisir d'ignorer les fonctionnalités de votre DLL ou d'afficher un message indiquant qu'elle a expiré.

Espérons que cela aide.