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

VBScript Discussion :

Problème chargement dll


Sujet :

VBScript

  1. #1
    adu
    adu est déconnecté
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 9
    Par défaut Problème chargement dll
    Bonjour à tous

    J'explique mon problème.

    Je dois créer un vbscript qui utilise les fonctions d'une dll fournie par un fabricant de cartes PCI

    Pour utiliser cette dll, j'ai récupéré dynamic wrapper x (dynwrappx.dll) car j'ai cru voir sur ce forum que je n'ai pas d'autres moyens

    Voici mon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Function Lance()
     
    Dim Bus_num(4)
    Dim Slot_num(4)
    Dim Card_num
    Dim DX
     
    Set DX = CreateObject("DynamicWrapperX")
     
    DX.Register "PI16.dll", "PI16_get_card_pos", "r=uuu"
    DX.PI16_get_card_pos bus_num, slot_num, card_num
     
    End Function
    Cette fonction a 0 paramètre en entrée et 3 en sortie

    Quand je lance cette fonction via VBS Factory, je suis carrément viré de VBS Factory sans message d'erreur

    Quand je double clique sur le fichier.vbs j'ai le message "Nb d'arguments ou affectation de propriété incorrects"

    Peut etre que le problème vient de la définition de mes variables. Sur la doc, on me dit que la fonction est de type Bool PI16_get_card_pos(OUT ULONG* bus_num, OUT ULONG* slot_num, OUT ULONG* cards_num)
    avec bus_num tableau de 4 max et slot_num tableau de 4 max

    Est ce que j'ai mal défini mes variables ?

    Sinon je sais que dans cette dll, il n'y a pas de fonction DllRegister. Est ce que ce ne serait pas ça la raison de mon problème ?

    Merci pour toute l'aide que vous pouvez m'apporter car là je suis totalement bloqué

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    habituellement une fonction n'as qu'une valeur de retour..

    Il me semble que tu devrai utiliser les paramètres de sorties...

    voir :
    http://contrib-vb.developpez.com/ome...cWrapperX/#LVI

  3. #3
    adu
    adu est déconnecté
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 9
    Par défaut
    Tout d'abord merci pour ta réponse

    Je pense que tu as raison mais je ne sais pas comment définir les paramètres en sortie

    j'ai essayé d'écrire ça

    DX.Register "PI16.dll","PI16_get_card_pos", "r=u"
    Retour = DX.PI16_get_card_pos (bus_num, slot_num, card_num)

    ça me donne "Nb d'arguments ou affectation de propriétés incorrects"

    J'ai essayé ça

    DX.Register "PI16.dll","PI16_get_card_pos", "i=UUU", "r=u"
    Retour = DX.PI16_get_card_pos (bus_num, slot_num, card_num)


    ça me donne "Type incompatible"

    avec "i=uuu" c'est la meme chose

    Encore merci pour ton aide

  4. #4
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    bonjour,

    Sinon je sais que dans cette dll, il n'y a pas de fonction DllRegister. Est ce que ce ne serait pas ça la raison de mon problème ?
    non, l'absence de cette fonction signifie simplement qu'il s'agit d'une "flat dll" et non d'une dll activex

    Est ce que j'ai mal défini mes variables ?
    oui

    ton dernier essai se rapproche de la solution mais selon ta doc, la fonction renvoie une valeur booléenne donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DX.Register "PI16.dll","PI16_get_card_pos", "i=UUU", "r=l"
    Retour = DX.PI16_get_card_pos (bus_num, slot_num, card_num)
    mais ça peut ne pas suffire si la fonction place dans les paramètres de sortie un pointeur vers un tableau de valeurs et non vers une valeur ULONG simple.
    comme vbs ne gère que des tableaux de variants dont la structure est très différente des tableaux classiques,
    je ne sais pas si le composant dynawrapperx se charge de la conversion
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  5. #5
    adu
    adu est déconnecté
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 9
    Par défaut
    Effectivement tu as raison c'était un problème de pointeur et de déclaration

    j'ai écrit

    DX.Register "PI16.dll","PI16_get_card_pos", "i=UUU", "r=l"
    Retour = DX.PI16_get_card_pos (bus_num(1), slot_num(1), card_num)

    et ça fonctionne

    L'info qui m'intéresse étant card_num, c'est nickel



    Merci beaucoup pour ton aide très précieuse

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/05/2009, 15h07
  2. Problème chargement dll avec VC++ 2K8
    Par Tazadar dans le forum C++
    Réponses: 0
    Dernier message: 16/04/2009, 16h05
  3. Problème chargement DLL
    Par Pierre59 dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 26/05/2007, 00h26
  4. Problème de chargement DLL
    Par Balthos dans le forum C++
    Réponses: 7
    Dernier message: 21/11/2006, 16h18
  5. problème de chargement dll
    Par tophque dans le forum MFC
    Réponses: 8
    Dernier message: 18/11/2005, 15h14

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