2 façons d'appeller sa dll

Résolu
cs_candyraton Messages postés 109 Date d'inscription dimanche 27 juillet 2008 Statut Membre Dernière intervention 2 février 2012 - 8 déc. 2008 à 08:32
cs_candyraton Messages postés 109 Date d'inscription dimanche 27 juillet 2008 Statut Membre Dernière intervention 2 février 2012 - 15 déc. 2008 à 09:46
Nous pouvons appeller  une dll perso de maniere direct comme ceci:

 public ou Private person1 As New cls__outils
Private Sub Command1_Click()
MsgBox person1.Nbre_disque
end sub

ou de maniere indirect comme ceci:

    Dim interfacedll6 As Object
    Dim serveurdll6 As Object
    Set interfacedll6 = CreateObject("madll.ServerInterface")
    Set serveurdll6 = interfacedll6.objGetClassInstance("cls_outils")
    CaptureWindow = serveurdll6.maprocedure(monarguementobjectouvariant)
    Set serveurdll6 = Nothing
    Set interfacedll6 = Nothing
    Exit Function

D'aprés son auteur (source ici) l'appel indirect permet de" maintenir l'intégrité des instances des classes du projet."

Si quelqu'un pouvait expliquer, c'est introuvable:

1 est ce vrai?, y a t'il un risque pour l'intégrité des instances en appel direct?
2 combien peut-on appeler  de fois de manière répété une dll appellée direct et déclarée public?
3 lorsque je mets en début de procédure dim person1 As New cls_outils, j'appel une nouvelle instance, c'est donc comme la maniére indirect n'est ce pas? même question: suis je limité
3 j'ai lu que les dll crées en vb étaient particuliéres, effectivement, l'appel n'est pas "classique"(Public Declare Function Putfocus Lib "user32" Alias "SetFocus" (..); Puis-je appeller ma dll de cette maniére?
4 ma dll vb6 va elle pouvoir être referencée par windows comme les siennes et pouvoir etre appellée depuis une appli de n'importe quel language?

Il est clair que cette question s'adresse à quelqu'un d'expérimenté.
Merci de m'(nous) éclairer sur ces questions.

2 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
8 déc. 2008 à 08:54
conneries...

le code utilisé autour du CreateObject, c'est pour rendre la chose un peu dynamique. Si la dll change, peu importera a ton programme. Tant que les noms ne changent pas...

on peut imaginer un tel scénario, si le projet de la dll n'a pas été configuré, et que la compatibilité binaire n'a pas été activée...

en bref, on s'ajoute de la lourdeur (Late-Binding) pour rien
3
cs_candyraton Messages postés 109 Date d'inscription dimanche 27 juillet 2008 Statut Membre Dernière intervention 2 février 2012 3
15 déc. 2008 à 09:46
Merci beaucoup renfield.
J'ai mis un moment à bien comprendre ta réponse, elle m'éclaircis finalement énormement.
ça n'était pas une question facile.
(nota: j'en profite pour exprimer à quel point j'ai apprécié nombres de tes talentueuses sources et commentaires (milles fois merci.)

(Je reposerais la question 4 sur le forum)
.
0
Rejoignez-nous