[URGENT] Passer des arguments a une DLL

blackwizzard Messages postés 1258 Date d'inscription mercredi 21 mars 2001 Statut Membre Dernière intervention 21 juin 2009 - 2 juil. 2002 à 01:05
cs_Arpent Messages postés 4 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 3 novembre 2003 - 3 nov. 2003 à 13:11
Bonjours, je voudrai creer un dll en asm (ce qui est fait) mais je n'arrive pas a passer des arguments a la seul fonction de cette dll.

imaginons le code suivant ::

msgB proc DTexte:DWORD, DTitre:DWORD

invoke MessageBox,NULL,addr DTexte,addr DTitre,MB_OK

ret

msgB endp

avec un prog VB, j'appel la dll de cette facon ::

Private Declare Sub msgB Lib "test.dll" (DTexte As String, DTitre As String)

Private Sub Form_Load()
msgB "Voici le texte", "Voici le titre"
End Sub

mais j'obtient une mesagebox avec des caracteres bizard et pas du tout mon texte.
je voudrais savoir comment faire pour passer des arguments correctement! (de type string et long)

Merci d'avance!
[BlackWizzard]

5 réponses

cs_PierreF Messages postés 33 Date d'inscription mercredi 15 mai 2002 Statut Membre Dernière intervention 24 octobre 2003
5 juil. 2002 à 18:29
Moi j'ai déjà eu ce problème!
Mais avec une DLL en C++. Je savait que ma DLL est bonne, donc j'avais un pb dans la déclaration du la fonction dans le VB.

Je pense que tu à le même pb. Par defaut VB déclare le paramètre comme étant ByVal. il fait une copie de la valeur. Toi tu veut un pointeur sur la donnée tu doit mettre ByRef

Essay donc de déclaré ta fonction comme ca:
Private Declare Sub msgB Lib "test.dll" (byref DTexte As String,byref DTitre As String)
0
blackwizzard Messages postés 1258 Date d'inscription mercredi 21 mars 2001 Statut Membre Dernière intervention 21 juin 2009 2
5 juil. 2002 à 19:07
ça fonctionne!
merci!

[BlackWizzard] http://blackwizzard.d2g.com
0
cs_PierreF Messages postés 33 Date d'inscription mercredi 15 mai 2002 Statut Membre Dernière intervention 24 octobre 2003
5 juil. 2002 à 20:38
Maintenant que tu sais comment faire et utiliser un DLL faite en asm tu peut mettre un tutoriel stp, car je ne sais pas faire un DLL en asm (ni en VB)
0
cs_PierreF Messages postés 33 Date d'inscription mercredi 15 mai 2002 Statut Membre Dernière intervention 24 octobre 2003
10 juil. 2002 à 22:30
Quand dans VB tu met ByRef vb te donne un pointeur sur ce qui te donnerait si tu mettais byval
Les strings VB sont des pointeurs (char * en C/C++). Donc si tu met ByRef VB te donne un pointeur sur un pointeur! (char ** en C/C++)

Mais VB conseille de mettre ByVal (ce evite les pointeur sur des pointeur)!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Arpent Messages postés 4 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 3 novembre 2003
3 nov. 2003 à 13:11
Ouais, un petit tut sur l'asm, stp BlackWizzard !
On aimerai bien avancer un peu aussi dans l'histoire...
Merci d'avance !
Arpent
Il n'y a qu'une Vérité, je la cherche
0
Rejoignez-nous