API mouse_event [Résolu]

Signaler
Messages postés
43
Date d'inscription
jeudi 9 décembre 2004
Statut
Membre
Dernière intervention
11 octobre 2013
-
Messages postés
43
Date d'inscription
jeudi 9 décembre 2004
Statut
Membre
Dernière intervention
11 octobre 2013
-
Bonjour,
J'utilise l'API MOUSE_EVENT pour simuler des clics souris. Pour le clic gauche et droit, pas de soucis. J'utilise ce code:
    Const MOUSEEVENTF_ABSOLUTE = &H8000
    Const MOUSEEVENTF_LEFTDOWN =
&H2
    Const MOUSEEVENTF_LEFTUP = &H4
    Const MOUSEEVENTF_WHEEL
= &H800
    Const WHEEL_DELTA = 120

    Call
mouse_event(MOUSEEVENTF_LEFTDOWN + MOUSEEVENTF_ABSOLUTE, Me.Left,
Me.Top, 0,
0) '
    Call mouse_event(MOUSEEVENTF_LEFTUP + MOUSEEVENTF_ABSOLUTE, Me.Left,

Me.Top, 0, 0)

Par contre, lorsqu'il s'agit de simuler la molette, là, rien à faire: ça ne marche pas !
Voici mon code:

    Const MOUSEEVENTF_ABSOLUTE = &H8000
    Const MOUSEEVENTF_WHEEL =
&H800
    Const WHEEL_DELTA = 120

    Call
mouse_event(MOUSEEVENTF_WHEEL + MOUSEEVENTF_ABSOLUTE, Me.Left,
Me.Top,
WHEEL_DELTA, 0)

Quelqu'un a-t-il une idée ? D'avance merci !!!

PS: je bosse sur VB 2008 Express sur Vista, Framework 3.5

Julien

9 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
66
il est inconcevable de jouer avec des choses si aléatoires pour piloter une page web...

selon ce que tu souhaites faire au final, il y a plusieurs facons de faire les choses...

mais s'il s'agit de piloter IE pour te logguer à ta place,
te suffit de faire un:

With WebBrowser1.document
.getElementsByID("login").Value = "mon_nom"
.getElementsByID("password").Value = "mon_pass"
.getElementsByID("form_auth").submit
End With

enfin, c'est à adapter, bien sur ^^

www.vbfrance.com/codes/PILOTER-INTERNET-EXPLORER-OU-WEBBROWSER-REPONSE-FORUM_25669.aspx

que souhaites tu faire, au final ?
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
66
tu peux très certainement te passer de cette API.
tentes plutot un PostMessage WM_MOUSEWHEEL

mais la solution n'est pas forcément bonne.

il y a bien d'autres moyen plus pro, plus propres pour piloter... laisse moi deviner....
une page web ?
Messages postés
43
Date d'inscription
jeudi 9 décembre 2004
Statut
Membre
Dernière intervention
11 octobre 2013

Merci pour cette réponse rapide !

Le but est de s'authentifier automatiquement sur une page web, en effet.
Mais si tu as d'autres pistes, je suis preneur...

Julien
Messages postés
43
Date d'inscription
jeudi 9 décembre 2004
Statut
Membre
Dernière intervention
11 octobre 2013

Merci
tu m'as mis sur la piste. C'est ce que je cherche à faire, "tout simplement".
Je n'avais pas encore exploré cette partie de VB...
Messages postés
43
Date d'inscription
jeudi 9 décembre 2004
Statut
Membre
Dernière intervention
11 octobre 2013

Après quelques recherches, il semble que le controle webbrowser soit à inclure dans mon formulaire !

Saurais tu par hasard récupérer l'instance IE ou firefox ouverte, ou suis-je obligé d'inclure le contrôle webbrowser dans mon formulaire ?

Si c'est la 2e option, cela ne m'arrange pas beaucoup ...
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
66
Set shell = CreateObject("Shell.Application")
For Each oWebBrowser in Shell.Windows
If oWebBrowser.LocationURL = "..." Then
oWebBrowser.document.getElement...
End If
Next oWebBrowser
Messages postés
43
Date d'inscription
jeudi 9 décembre 2004
Statut
Membre
Dernière intervention
11 octobre 2013

De mon coté, il ne comprend pas l'instruction...
il me bloque, et m'affiche l'exception

L'exception System.InvalidCastException n'a pas été gérée
  Message="Impossible d'effectuer un cast d'un objet COM de type 'System.__ComObject' en type de classe 'System.Windows.Forms.WebBrowser'. Les instances de types qui représentent des composants COM ne peuvent pas être castées en types différents représentant des composants COM ; toutefois, elles peuvent être castées en interfaces tant que le composant COM sous-jacent prend en charge les appels QueryInterface pour l'IID de l'interface."
 
voilà...

si quelqu'un comprend ce charabia ...
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
66
c'est pas du .NET que je t'ai pas filé, dsl ^^
Messages postés
43
Date d'inscription
jeudi 9 décembre 2004
Statut
Membre
Dernière intervention
11 octobre 2013

Pas grave !!

je suis en train de parcourir le msdn... y a pas grand chose... ou alors je cherche  mal !!!