DLL - modifier une Form depuis une DLL

Signaler
Messages postés
119
Date d'inscription
vendredi 18 avril 2003
Statut
Membre
Dernière intervention
28 décembre 2006
-
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
-
Bien le bonjour, j'aimerai juste savoir comment faire pour modifier quelque chose dans une form depuis une dll appeler par une form.

mon code appelle une dll Bob dans la form, puis je lance la function toto (contenue dasn la dll ). cette fonction doit modifier un label (par exemple) dans la form. Simple me direz vous :
dans une form il suffit de faire :
Main.label1.caption = "coucou"
ou juste
label1.caption = "coucou"

mais dans la dll le debuger me dit qu'il trouve pas d'objet ou de with ou je sais pas quoi...
Doit-je definir le Main ( c'est le nom de ma form ) comme un objet ou un truk comme ça :
dim Main as Form/objet/string/Schtroumph
Set Main = Objet
enfin voila si vous pouvez m'aidez, oui vous qui lisez ces lignes, ne me laissez pas dans la misère !
merci ;)

.:|GuilleW|:.
http://tuatha.fr.st
L'Emerveillement est le premier pas vers la connaissance ...

4 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
67
Salut
Une fois que tu es dans le code de la DLL, tu n'as plus de référence aux objets de l'application appelante.
La seule solution que tu aies, est de fournir à la DLL un paramètre qui représente le 'handle' (chiffre de type Long qui est attribué à tous les objets dans windows, tous !) de l'objet sur lequel tu voudras agir. Cette valeur est dans le paramètre hWnd de pratiquement tous les objets VB.
Après, pour pouvoir agir sur l'objet, il faut passer par les APIs et notamment SendMessage.
Renseigne toi sur cette API, assez complexe car la manière de l'utiliser (le paramétrage)dépend de l'objet auquel tu t'adresses ... Bon courage

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
97
Il existe plus simple : passer la feuille en paramètre à la dll, et
ensuite, modifier la feuille par cet objet... plutôt que de passer
directement par les API...

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
Messages postés
119
Date d'inscription
vendredi 18 avril 2003
Statut
Membre
Dernière intervention
28 décembre 2006

Ok pour la simplicité ;)


Mais alors ... si tu pouvais me donner le code source dont tu me parle ! :p


Merci

.:|GuilleW|:.
http://tuatha.fr.st
L'Emerveillement est le premier pas vers la connaissance ...
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
97
Ben en gros, ca donne cà (dans ton module de classe de ta dll) :



Private m_oForm As Form



Public Property Get Form() As Form

Set Form = m_oForm

End Property


Public Property Set Form(ByRef oForm As Form)

Set m_oForm = oForm

End Property



Et ensuite, pour l'utiliser :



Let m_oForm.Caption = "Nouveau titre !"


DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/