Position souris

Signaler
Messages postés
3
Date d'inscription
mardi 16 août 2005
Statut
Membre
Dernière intervention
17 août 2005
-
Messages postés
3
Date d'inscription
mardi 16 août 2005
Statut
Membre
Dernière intervention
17 août 2005
-
Bonjour,

Pour recuperer la position de la souris, j'utilise la fonction GetCursorPos .

La methode marche quand j'utilise le code dans Excel.

MAIS :

j'ai compiler mon code en ligne de commande : vbc test.vb /r:system.dll

ca compile bien sauf que lorsque j'appelle cette fonction, elle me retourne false

avec un code d'erreur 126 ( qui correspond a une procedure non trouvé )



Est ce que quelqu'un peu m'aider ????



Structure LPPOINT

Dim X As long

Dim Y As long

End Structure



Public Declare Function GetCursorPos Lib "user32" (lpPoint As LPPOINT) As Long



et l'appel :



Dim Tampon as LPPOINT

GetCursorPos(Tampon)



MERCI

5 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
Salut
Bizarre.
Essaye de respecter la syntaxe complète pour voir :
Public Declare Function GetCursorPos Lib "user32" Alias "GetCursorPos" (lpPoint As LPPOINT) As Long

Par contre, traditionnellement, la définition des types, c'est Type
Structure, je ne connais pas : surement une version récente de Excel

Sursaut : Il y a une erreur :
Quand tu appelles une fonction ou sub comme tu le fais (juste le nom de la fonction et les paramètres, sans utiliser Call ou "Résultat = ...), il ne faut pas mettre de parenthèses :
Soit Call GetCursorPos(Tampon)
Soit GetCursorPos Tampon
Je pense qu'en mode création, c'est l'IDE qui corrige tout seul, mais en compilé, peut-être que ça ne passe pas.

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
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
41
salut.
je ne connais ni VBA, ni ta commande.
de ce que j'en lis, tu transformes ton projet en DLL ??? pour l'appeler au besoin????

si c'est le cas, je me demande si ton Type ne devrait pas être Public.....

PCPT
Messages postés
3
Date d'inscription
mardi 16 août 2005
Statut
Membre
Dernière intervention
17 août 2005

Toujours rien.



J'ai essayer toutes les variantes possible je crois ...



Il y a un truc qui retient mon attention :



POINTAPI est defini en tant que "structure".

Est ce vraiment la meme chose que la definition "Type"



C'est la seule chose que je suis obligé de changer pour compiler
en EXE. ( sinon il ne veut pas compiler me disant que type n'est plus
disponible, utiliser structure a la place )



Je vais continuer a chercher encore un peu mais repondez moi vite, sinon j'aurais peut etre deja sauter ...
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
41
3heures de chute libre....
je crains le pire......

normalement, ton LPPOINT sous VB6 serait déclaré :

Public Type POINTAPI
X as Long
Y as Long
End Type

"Structure" ne me dit rien non plus.....

PCPT
Messages postés
3
Date d'inscription
mardi 16 août 2005
Statut
Membre
Dernière intervention
17 août 2005

C'est bon j'ai trouvé ...

en fait je compile avec VB.NET et le type des données a changées

en effet un long : sur 32 bits en VB6 est en 64 bits en VB.NET

donc il faut declarer X et Y en integer : 32 bits en VB.NET pour que cela soit compatible



apres un : call GetCursorPos(var) et on recupere la position.



j'ai declarer aussi la fonction avec en parametre ByRef lppoint as POINTAPI



Merci a tous.



P.S.

j'avais pris un parachute ..