DLL lire une variable ?

Résolu
Signaler
Messages postés
241
Date d'inscription
mercredi 1 octobre 2003
Statut
Membre
Dernière intervention
19 février 2006
-
Messages postés
241
Date d'inscription
mercredi 1 octobre 2003
Statut
Membre
Dernière intervention
19 février 2006
-
Comment créer une variable dans une DLL (issue de VB6) lisible par un autre programme ?

Merci.

12 réponses

Messages postés
241
Date d'inscription
mercredi 1 octobre 2003
Statut
Membre
Dernière intervention
19 février 2006
2
Pour cloturer cette question, je n'ai pas trouver la réponse !
Cependant, je peux le faire en écrivant un fichier temporaire sur le disque dur (au lieu de l'écrire en mémoire). Ca fonctionne très bien !

L'exemple est présenté en fin de cet article :
http://www.vbfrance.com/forum.v2.aspx?ID=373982

Merci pour votre aide.
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
130
Déclare ta variable en public dans ta classe de dll, ou si tu veux
garder l'encapsulation, utilise des propriétés Get/Let toujours dans ta
classe, mais cette fois-ci avec une variable private.

DarK Sidious

[Administrateur et responsable VB/API du site ProgOtoP]
Messages postés
241
Date d'inscription
mercredi 1 octobre 2003
Statut
Membre
Dernière intervention
19 février 2006
2
Ma DLL est composée d'une class et d'un module. Si je comprends bien, je dois déclarer en Public ma variable uniquement dans la class et pas dans le module. => Je sais faire.

Que dois-je déclarer dans mon programme qui doit lire le contenu de cette DLL ? Comment faire dialoguer cette DLL et mon programme ?

Merci de ton aide, car je n'arrive pas à trouver d'infos...
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
130
C'est simple : Compile ta dll, ensuite crée une référence à ta dll dans
ton projet qui doit l'utiliser (Menu Projet/Références), et ensuite, il
te suffit d'instancier ta classe :



Dim oObjet As New CClass



let oObjet.Variable = Valeur

DarK Sidious

[Administrateur et responsable VB/API du site ProgOtoP]
Messages postés
241
Date d'inscription
mercredi 1 octobre 2003
Statut
Membre
Dernière intervention
19 février 2006
2
Dans le principe tes conseilles fonctionnent bien, mais les variables lues par mon programme restent inchangées (affichage via Debug) quelques soit la valeur de celles de la DLL (affichage via msgbox).
J'ai essayé tout ce que je peux, du moins pour ce que je connais. Mais je n'y arrive pas, et je ne comprends pas pourquoi ???

Je fais une adaptation de la source de 15669 EBArtSoft (que t'as commenté) =20732 : http://www.vbfrance.com/code.aspx?ID=20732
Dans cette source, un projet créé la DLL, le 2ème projet l'installe. Donc, j'ai créé un 3ème projet qui scrute via un Timer les variables de la DLL.

STP peux tu m'aider, je suis dessus depuis 4 jours et je n'y arrive pas...
Merci d'avance.
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
130
Comment fait tu pour modifier la valeur de ta variable ? Où l'as tu déclarée ?



Montre moi ton code, ca sera plus simple ;)

DarK Sidious

[Administrateur et responsable VB/API du site ProgOtoP]
Messages postés
241
Date d'inscription
mercredi 1 octobre 2003
Statut
Membre
Dernière intervention
19 février 2006
2
Encore merci pour ton aide. J'ai mis le code à (je ne savais pas comment te le donner) :
http://www.vbfrance.com/code.aspx?ID=28902

La variable Etat passe à True dès qu'une sélection est faite.
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
130
Ok, je regarde cà et je te tiens au courant.

DarK Sidious
________________________________________________________

[Administrateur et responsable VB/API du site ProgOtoP]
Messages postés
241
Date d'inscription
mercredi 1 octobre 2003
Statut
Membre
Dernière intervention
19 février 2006
2
Bonjour Darksidious,

Je ne sais pas si tu as eu le temps de trouver une solution à mon problème de lecture de DLL, mais au cas ou, je te précise le role de chaque projet :

vb6ContextMenu : permet de créer la DLL. C'est evidemment dans cette classe que je souhaite lire la variable Etat (et les autres)

Setup : permet d'intégrer la DLL à l'explorateur de Windows. Il n'est pas utile de faire un setup à chaque MAJ de la DLL.

Scrute\Projet1 : permet de scruter la classe de la DLL pour extraire le contenu de la variable Etat.

Encore merci pour ton aide
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
130
J'ai laissé un message sur ta source : je ne vois pas ce qui ne marche
pas malheureusement ! Je pensais au premier abord qu'il s'agissait de
l'instance de la classe qui était différente de celle qui modifiais la
valeur de Etat, mais non. Là je ne vois pas ce qui flanche !

DarK Sidious

Administrateur et reponsable VB/API du site www.ProgOtoP.com
Messages postés
241
Date d'inscription
mercredi 1 octobre 2003
Statut
Membre
Dernière intervention
19 février 2006
2
Bonjour DarK Sidious, aurais tu un code à me présenter qui utilise une DLL et un autre pgm qui lit son contenu (ce que je cherche à faire) ? Il faut que je vois comment d'autres ont fait pour que je comprenne mon pb.
Sur le site je n'ai rien trouvé, mais j'ai peut etre mal cherché. Et, sur le web, je n'arrive pas à trouver d'exemple gratuit... Je finirai bien par trouver !
Je ne t'embeterai plus après.

Encore merci pour ton aide.
Messages postés
241
Date d'inscription
mercredi 1 octobre 2003
Statut
Membre
Dernière intervention
19 février 2006
2
Le fait d'utiliser le terme New génère la création d'une class battie sur la class incluse dans la DLL. Donc, toutes les variables sont initialisées à To et invariantes dans les temps.
Avec New, on utilise le contenu de la class comme si c'était un module supplémentaire à notre pgm.

J'ai fait une DLL, battie sur tes conseils, qui compte en boucle de 1 à 65535. Et le pgm vient lire les 100 premières valeures à n'importe quel moment. Il affiche tjs les memes chiffres.

Ca ne résoud pas mon problème. Je ne sais toujours pas lire dans une DLL active...
HELP ME...