IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Appel dynamique à une DLL


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 21
    Par défaut Appel dynamique à une DLL
    Bonjour,

    J'ai une application VB6 qui peut générer des documents Word (mais dont ce n'est pas la tâche principale.). Les postes sur lesquels mon application sera installée ne disposent pas tous de Word installé, donc je ne peux pas mettre mon mswordX.olb dans les références du projet, sinon l'application ne s'exécute pas.

    Y a t'il un moyen de faire appel à cette librairie uniquement si elle existe ? Je pensais à faire un test d'existence du fichier, puis à faire un appel conditionnel dans le code uniquement si la librairie existe.

    Je n'ai pas trouvé ce genre de fonction sur Internet. Pouvez vous me dire si cela existe et si oui, quelle fonction utiliser ?

    Merci

  2. #2
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut
    Bonjour,

    Il y a plusieurs solutions:
    soit tester un tentative d'instanciation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Dim obj As Object
        Set obj = CreateObject("Word.Application")
        If TypeName(obj) <> "Application" Then
            MsgBox "Word non installé"
        Else
            Set obj = Nothing
        End If
    soit aller lire dans la base de registre à HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office
    dont la valeur de version max contient les applications office installées

    etc.

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonsoir,

    Je préfère de très loin la 2ème solution proposée par Dark Vader.

    Pourquoi ?

    Parce qu'elle permet de se "fabriquer" un setup (fichier d'installation) qui installerait en connaissance de cause. Il n'est pas difficile de faire de tels setups conditionnels (et d'installer ce qu'il convient d'installer en parfaite connaissance de cause : à savoir un exe ou l'autre).

    Une même lecture de ce type (de la BDR, donc), permettrait en outre de connaître la version Word présente et d'éviter certains obstacles de "pilotage".

    Bon... C'est ainsi que je vois (personnellement) Midi à ma porte. D'autres pourraient poser un regard différent et préférer n'avoir qu'une seule application (alors plus lourde) bourrée d'expressions conditionnelles, plutôt que de mettre à disposition de l'utilisateur un support d'installation plus lourd, composé de plusieurs versions, (mais chacune d'entre elles étant plus légère).

    Rien n'interdit de livrer son CD avec un fichier d'aide. Rien n'interdit non plus de mettre (là c'est court) dans chacune des versions (de l'application) un message d'invite en cas d'évolution de la version de Word présente (invitation à relancer le Setup d'installation).

    Voilà mon point de vue, mais ce n'est que le mien....

  4. #4
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut
    Citation Envoyé par ucfoutu Voir le message
    Bonsoir,

    Je préfère de très loin la 2ème solution proposée par Dark Vader.

    Pourquoi ?

    Parce qu'elle permet de se "fabriquer" un setup (fichier d'installation) qui installerait en connaissance de cause. Il n'est pas difficile de faire de tels setups conditionnels (et d'installer ce qu'il convient d'installer en parfaite connaissance de cause : à savoir un exe ou l'autre).

    Une même lecture de ce type (de la BDR, donc), permettrait en outre de connaître la version Word présente et d'éviter certains obstacles de "pilotage".

    Bon... C'est ainsi que je vois (personnellement) Midi à ma porte. D'autres pourraient poser un regard différent et préférer n'avoir qu'une seule application (alors plus lourde) bourrée d'expressions conditionnelles, plutôt que de mettre à disposition de l'utilisateur un support d'installation plus lourd, composé de plusieurs versions, (mais chacune d'entre elles étant plus légère).

    Rien n'interdit de livrer son CD avec un fichier d'aide. Rien n'interdit non plus de mettre (là c'est court) dans chacune des versions (de l'application) un message d'invite en cas d'évolution de la version de Word présente (invitation à relancer le Setup d'installation).

    Voilà mon point de vue, mais ce n'est que le mien....
    ben les 2 solutions mon général puisque la 1ère retourne une instance de word donc indirectement application.version

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 21
    Par défaut
    Merci pour vos réponses. J'ai essayé la première méthode et effectivement, la communication avec Word marche même sans faire appel à l'OLB de Word.
    Par contre, j'ai d'autres petits soucis : Toutes les constantes définies par l'OLB ne sont plus présentes, comme par exemple wdWindowStateMaximize, wdWhite...

    Avez vous une solution pour contrer ce problème (j'ai commencé à convertir les constantes vers leur valeur entière, mais c'est pas la solution idéale...) ?

    Merci

  6. #6
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut
    Le beurre et l'argent du beurre 8)
    Les constantes ne sont chargées dans le projet qu'avec des liaisons précoces.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. PB appel d'une DLL
    Par maveric dans le forum VC++ .NET
    Réponses: 2
    Dernier message: 10/08/2006, 19h17
  2. Appel d'une Dll dans le dossier courant.
    Par méphistopheles dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 16/07/2006, 21h00
  3. Appel d'une dll (c++) dans un programme c++
    Par cout dans le forum C++
    Réponses: 2
    Dernier message: 01/06/2006, 14h52
  4. [D6] Charger dynamiquement une DLL
    Par Lung dans le forum Langage
    Réponses: 2
    Dernier message: 10/02/2006, 08h04
  5. Réponses: 4
    Dernier message: 07/12/2002, 07h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo