Problème pour mouse_event sous Seven 64b. [Résolu]

frankinfo - 7 déc. 2012 à 16:31 - Dernière réponse : ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 7 déc. 2012 à 18:43
Bonjour,
J'essaie en vain de faire une appli sous Visual Basic Express 2010 sous Seven 64b. Le but est de faire un auto-clicker.

Je déclare ceci :
Declare Sub mouse_event Lib "user64" Alias "mouse_event" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)

Et plus loin, je voudrais faire un clic gauche de souris à la position mémorisée
Dim X As Integer = Val(txt_mouse_x.Text)
Dim Y As Integer = Val(txt_mouse_y.Text)
Windows.Forms.Cursor.Position = New System.Drawing.Point(X, Y)
mouse_event(&H2, 0, 0, 0, 1)
mouse_event(&H4, 0, 0, 0, 1)

Le problème est que sous Seven 64b, le mouse_event plante :
"Impossible de charger la DLL 'user64': Le module spécifié est introuvable. (Exception de HRESULT : 0x8007007E)"

Impossible de faire un clic gauche de souris sous Seven 64b. Vous pouvez m'aiguiller vers la solution ?
Merci.
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 7 déc. 2012 à 18:43
3
Merci
Je n'ai pas tout compris mais ça marche

Cesse d'inventer des librairies inexistantes, "au feeling" et tu t'en porteras mieux.
La librairie User64.dll n'existait tout simplement pas et la librairie User32.dll est celle qu'utilise également Win 7 64 bits. Voilà tout
Te reste à libérer cette discussion (un clic sur le tag "réponse acceptée").
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.

Merci ucfoutu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de ucfoutu
ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 7 déc. 2012 à 17:10
0
Merci
Bonjour,
1) J'ignore ce qu'est la librairie "user64" ! D'où la sors-tu ?
2) pas de type long en VB.Net

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
0
Merci
Heu... Ben j'en sais rien, j'ai pompé un code et j'ai vu qu'il était en user32
Etant en 64b, j'ai changé...
Mais peut-être que je n'utilise pas la bonne méthode ? J'arrive à avoir la position de mon curseur en X et Y sur mon écran, je veux juste faire un clic maintenant.
Commenter la réponse de frankinfo
NHenry
Messages postés
14297
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 novembre 2018
- 7 déc. 2012 à 18:16
0
Merci
Bonjour,

En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Commenter la réponse de NHenry
0
Merci
Bonjour,
Ok, j'ai fais ces modifs dans mon VB.
Mais sinon, une idée pour ce faire ce clic de souris ?
Commenter la réponse de frankinfo
0
Merci
Pour m'aider à comprendre, voilà le message complètement obscure pour moi :
Un appel à la fonction PInvoke 'auto_clic!WindowsApplication1.frmautoclic::mouse_event' a déséquilibré la pile. Cela peut se produire, car la signature PInvoke managée ne correspond pas à la signature cible non managée. Vérifiez que la convention d'appel et les paramètres de la signature PInvoke correspondent à la signature non managée cible.

L'erreur est sur : mouse_event(&H2, 0, 0, 0, 1)

Merci.
Commenter la réponse de frankinfo
NHenry
Messages postés
14297
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 novembre 2018
- 7 déc. 2012 à 18:36
0
Merci
Bonjour,

As-tu modifié le code (Long -> Integer) comme te l'a conseillé UcFoutu ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Commenter la réponse de NHenry
0
Merci
Oui mais même souci...
MAIS maintenant, avec cette méthode, ça marche :

Private Declare Sub mouse_event Lib "user32" (ByVal dwflags As Integer, ByVal dx As Integer, ByVal dy As Integer, ByVal cbuttons As Integer, ByVal dwextrainfo As Integer)
Private Const mouseclickup = 4
Private Const mouseclickdown = 2

et la commande
Windows.Forms.Cursor.Position = New System.Drawing.Point(X, Y)
mouse_event(mouseclickdown, 0, 0, 0, 0)
mouse_event(mouseclickup, 0, 0, 0, 0)

Je n'ai pas tout compris mais ça marche. Merci à vous pour vos réponses.
Commenter la réponse de frankinfo

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.