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

frankinfo - 7 déc. 2012 à 16:31 - Dernière réponse : ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention
- 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

ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 7 déc. 2012 à 18:43
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 7 déc. 2012 à 17:10
0
Utile
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
Utile
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 14179 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 23 mai 2018 Dernière intervention - 7 déc. 2012 à 18:16
0
Utile
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
Utile
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
Utile
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 14179 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 23 mai 2018 Dernière intervention - 7 déc. 2012 à 18:36
0
Utile
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
Utile
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.