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 :

[VB6]ouvrir une DLL sans en conaitre le nom à la creation


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau membre du Club
    Inscrit en
    juin 2002
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : juin 2002
    Messages : 58
    Points : 35
    Points
    35
    Par défaut [VB6]ouvrir une DLL sans en conaitre le nom à la creation
    SAlut à tous,

    VOila j'ai un petit probleme de VB. Durant l'execution de mon application je dois lancer une fonction presente dans une DLL. Je ne connais pas le repertoire de cette DLL durant la creation de l'application, je connais par contre son nom. Durant l'execution, je determine le repertoire de la DLL. Comment executer la fonction qui m'interesse dans cette DLL si je ne connais pas son nom complet durant la creation? Je peux quand meme utiliser "Public Declare Function toto Lib "MIA_C++.dll" (...)"?

    A bientot

    VIc
    il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes (devise Shadok)

  2. #2
    Membre du Club

    Inscrit en
    décembre 2003
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : décembre 2003
    Messages : 21
    Points : 48
    Points
    48
    Par défaut
    Hello,

    Les librairies référencées par Declare sont recherchées entre autres dans le répertoire courant. Donc si tu changes celui-ci provisoirement avant d'appeler ta fonction, en principe ça passe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
     
    Declare Function MaFonction Lib "MaDll"(ByVal N As Double) As Double
     
    Sub Test()
     
      Dim DLLPath As String
      Dim CDir As String
     
      DLLPath = "C:\Mon Dossier"
     
      CDir = CurDir
      ChDir DLLPath
     
      MsgBox MaFonction(3.14)
     
      ChDir CDir
     
    End Sub
    Si tu veux un truc plus "propre" mais moins simple, tu peux aussi ajouter le chemin d'accès de ta DLL à la variable d'environnement PATH -par SetEnvironmentVariable- avant d'appeler ta fonction.

    Bonne chance.

  3. #3
    Nouveau membre du Club
    Inscrit en
    juin 2002
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : juin 2002
    Messages : 58
    Points : 35
    Points
    35
    Par défaut
    Ok merci, ta premiere solution ne marche pas mal mais effectivement je prefairerait utiliser le coup de SetEnvironmentVariable. Comment utilise t'on la ptateforme SDK?

    Merci
    VIc
    il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes (devise Shadok)

  4. #4
    Nouveau membre du Club
    Inscrit en
    juin 2002
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : juin 2002
    Messages : 58
    Points : 35
    Points
    35
    Par défaut
    en fait c'est bon j'ai trouvé la doc merci.
    il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes (devise Shadok)

  5. #5
    Membre du Club

    Inscrit en
    décembre 2003
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : décembre 2003
    Messages : 21
    Points : 48
    Points
    48
    Par défaut
    Avec SetEnvironmentVariable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Declare Function SetEnvironmentVariable Lib "kernel32" Alias "SetEnvironmentVariableA" _
    (ByVal lpName As String, ByVal lpValue As String) As Long
     
    Declare Function GetEnvironmentVariable Lib "kernel32" Alias "GetEnvironmentVariableA" _
    (ByVal lpName As String, ByVal lpBuffer As String, ByVal nSize As Long) As Long
     
    Declare Function MaFonction Lib "MaDll" (Nombre As Double) As Double
     
    Sub Test()
     
       MsgBox MaFonction(3.14)
     
    End Sub
     
    Sub Main()
     
       Dim EnvPath As String
     
       EnvPath = Space(GetEnvironmentVariable("PATH", EnvPath, 0) - 1)
       GetEnvironmentVariable "PATH", EnvPath, Len(EnvPath) + 1
       SetEnvironmentVariable "PATH", EnvPath & ";C:\Temp"
     
       Test
     
    End Sub
    Il suffit d'exécuter SetEnvironmentVariable une seule fois à l'ouverture du programme, c'est pourquoi je l'ai mis dans Main.

    Attention, il y a un risque de plantage sous Visual Studio à partir de la deuxième exécution, j'ignore pourquoi. Aucun problème en revanche quand on lance le programme compilé.

  6. #6
    Nouveau membre du Club
    Inscrit en
    juin 2002
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : juin 2002
    Messages : 58
    Points : 35
    Points
    35
    Par défaut
    mercciiii, ca marche super bien !!!
    il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes (devise Shadok)

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

Discussions similaires

  1. Ouvrir une image sans l'afficher
    Par smarties dans le forum Langage
    Réponses: 5
    Dernier message: 07/05/2006, 01h46
  2. [VB6]ouvrir une image a partir d'un listbox
    Par patoch76 dans le forum VB 6 et antérieur
    Réponses: 26
    Dernier message: 25/04/2006, 22h06
  3. [VB6] Découper une chaine sans délimiteur
    Par dbozec dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 13/04/2006, 20h26
  4. [VB6]Appelez une dll
    Par LEYLA dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 31/03/2006, 18h03
  5. (VB6)Ouvrir une form en mode ajout à parti d'une autre
    Par djancof dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 13/02/2006, 15h40

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