Pointeur de structure venant d'une DLL [Résolu]

Signaler
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
-
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
-
Bonjour à tous

Voila je récupere un pointeur d'une structure créé dans une DLL
J'arrive a lire cette structure en faisant plusieurs CopyMemory de suite et les attribuant a chaque branche de la structure.

Je voudrais savoir si il est possible, de poser en une seule fois les pointeurs dans la structure, sans avoir a passer par la valeur.

Public Type Complexe
 String As String
 Long As Long
 Integer As Integer
End Type

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal Size As Long)
Dim VariableStructurer As Complexe, Phrase As String, PointeurDll As Long, PointeurElement As Long

 ChDir App.Path
   
 PointeurDll = CreationStructureStandard
 
 CopyMemory PointeurElement, ByVal PointeurDll, 4
 VariableStructurer.String = Space$(lstrlen(PointeurElement))
 lstrcpy VariableStructurer.String, PointeurElement
  
 CopyMemory VariableStructurer.Long, ByVal PointeurDll + 4, 4

 CopyMemory VariableStructurer.Integer, ByVal PointeurDll + 8, 4
 
 Phrase = Str(VariableStructurer.Integer) + Chr(13)
 Phrase = Phrase + Str(VariableStructurer.Long) + Chr(13)
 Phrase = Phrase + VariableStructurer.String

 MsgBox Phrase, vbOKOnly, "Visual Basic - Reception d'une structure Standard de la DLL"


Je vous souhaite une bonne journée

7 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Bah non.
Tu as besoin de trois réponses, donc il faut questionner trois fois.
Mais bon, il te suffit de mettre cette recherche de pointeur dans une Sub et d'appeler la Sub.
Exemple "à la grosse"
Sub GetPointers(ByRef maVariableStructurer As Complexe, _
                ByRef PointeurDll As Long)
' Remet ici ton code en remplaçant VariableStructurer par maVariableStructurer 
End Sub
et appelles la sub en fournissant les deux infos nécessaires
Call GetPointers(VariableStructurer, LePointer)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Salut

Pas compris ta question.

NB : Très très mauvaise bonne idée d'appeler tes variables comme des mots clés du langage - gare aux bugs difficiles à cerner ...

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
Oui ,tu as raison en fait comme c'est un exemple j'ai pas plus réféchi que ça ....mais je corrigerais

En fait il faut que je fasse 3 copymemory pour transférer le pointeur dans la structure

Je voulais savoir si l'on pouvait faire cela en une seule fois ???
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
D'accord je croyais que y'avait un moyen plus simple pour retourner la structure entière en une seule fois.
Style pouvoir travailler directement les pointeurs et les copier dans les pointeurs de la structure, un truc comme ça

Je me renseignais aussi dans y'aurait plusieurs structures différentes, je serais donc obligé de créer plusieurs procédures (Une par type de structure)

Merci de ton aide et bonne journée
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Oui, puisque chaque structure pouvant héberger des types différents de variables, les offset|décalages seront, eux aussi, propres à la structure.
Messages postés
403
Date d'inscription
mercredi 19 avril 2006
Statut
Membre
Dernière intervention
7 août 2020
1
Bonjour,

Si tu peux développer ton appli en .net, il existe des solutions à ton pb.


Bonne Prog
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
Merci de ta réponse LESDIS

Mais VB6 est déjà bien assez compliqué pour moi

Apparemment .NET a corrigé pas mal de problèmes de VB6, et rajouté beaucoup de fonctions.
Mais il a apporté aussi la complexité avec

Passe une bonne journée