begin process at 2008 09 05 19:00:37
1 237 429 membres
369 nouveaux aujourd'hui
14 313 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Comment passer le pointeur d'une structure de masm vers VB6? [ Archives / c, c++ et asm ] (OujdaMajid)

Comment passer le pointeur d'une structure de masm vers VB6? le 26/12/2005 14:49:43

OujdaMajid
Bonjour tout le monde, voilà, je suis occupé à developper un petit programme (masm et visual basic 6). en masm, je developpe une dll en masm que je veux utiliser en VB(je prefere la develolpper en masm plutôt que c ou c++). la dll en masm envoie un pointeur d'une structure vers vb , comme ceci : ... demo proc hwnd:DWORD, msg:DWORD, wParam:DWORD, lParam:DWORD ..... ; je recupre le pointeur de la structure qui se trouve en lParam (par exemple ; typedef struct { ; LPARAM lParam; ; WPARAM wParam; ; UINT message; ; HWND hwnd; ; } CWPSTRUCT; mov edx, lParam assume edx:PTR CWPSTRUCT .if ([edx].wParam==1) invoke PostMessage,h,msg,wParam,lParam .endif ................... demo endp alors le probléme est le suivant, en asm le pointeur lParam pointe bien sur un estructure "CWPSTRUCT" mais quand j'envoie le pointeur vers vb via l'API PostMessage je rerçois un pointeur erroné et quand je veux l'appliquer à une structure "CWPSTRUCT" en vb, vb se plante, donc ma question est la suivante : pourquoi le pointeur pointe bien en masm et pas en vb. est ce un probleme de placement de mémoire ou quoi...? merci d'avance

Re : Comment passer le pointeur d'une structure de masm vers VB6? le 26/12/2005 18:54:31

patatalo
Membre Club
(Admin CS)
salut, a mon avis, c'est la déclaration de la structure sous VB qui doit etre mauvaise. il faudrait desassembler le code vb compilé pour trouver comment il utilise ce pointeur et pourquoi le referencement n'est pas correct. @++

Re : Comment passer le pointeur d'une structure de masm vers VB6? le 27/12/2005 13:59:40

OujdaMajid
dans vb, la déclaration de la structure : type CWPSTRUCT lParam as long wParam as long message as long hwnd as long end type donc il déclare tout comme long, et j'ai affiché la taille de la structure dans c++ et vb et c'est bien 16 octets (4 * long)

Re : Comment passer le pointeur d'une structure de masm vers VB6? le 29/12/2005 09:09:46

patatalo
Membre Club
(Admin CS)
salut, cette structure est utilisée pour hooker les appels CallWindowProc. qui a alloué cette structure ? est elle encore existante a la sortie la fonction ? PostMessage poste simplement le message SendMessage attends la fin de prise en charge du message. ça pourrait bien etre carrement l'utilisation de la structure qui peut etre invalide car la structure a été liberée bien avant son utilisation. @++

Re : Comment passer le pointeur d'une structure de masm vers VB6? le 07/01/2006 02:23:02

BLUEBIBUBBLE

Une Fonction VB qui retourne une structure utilise en fait (de manière invisible en VB) le premier paramètre de la fonction pour transmettre l'addresse de la structure retournée . Il te faut recopier le contenu de la structure a l'addresse imposée par visual basic, voir:
http://www.asmfr.com/code.aspx?ID=18833



Classé sous : vb, structure, pointeur, lparam, masm

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS