IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Utiliser SendInput avec Windev pour simuler un évènement Souris ou Clavier


Sujet :

WinDev

  1. #1
    Membre actif
    Inscrit en
    Août 2005
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 96
    Points : 205
    Points
    205
    Par défaut Utiliser SendInput avec Windev pour simuler un évènement Souris ou Clavier
    Bonjour,

    j'essai depuis quelques jours d'utiliser la fonction api SendInput sans résultats.
    Il semble que la structure que je passe à la fonction ne soit pas correcte .

    J'ai testé plusieurs méthodes, mais rien ne fonctionne.
    Une idée ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
     
    str_MOUSEINPUT est une structure
    	//Position x de la souris.
    	iX est un entier
    	//Position y de la souris.
    	iY est un entier
    	//Informations supplémentaires selon l'évènement.
    	iMouseData est un entier sans signe sur 4 octets
    	//Type d'événement.
    	iFlags est un entier sans signe sur 4 octets
    	//L'horodatage (Time stamp) de l'événement, en millisecondes. Si ce paramètre est 0, le système fournira son propre horodatage.
    	iTimeMs est un entier sans signe sur 4 octets
    	//32-bit Information supplémentaire concernant l'évènement souris.
    	iExtraInfo est un entier sans signe sur 8 octets
    FIN
     
    str_KEYBDINPUT est une structure
    	//Virtual Keycode of keys. E.g., VK_RETURN, VK_TAB.
    	iVk est un entier
    	//Scan Code value of keys.
    	iScan est un entier
    	//Flag that is set for key state. E.g., KEYEVENTF_KEYUP. 
    	iFlags est un entier sans signe sur 4 octets
    	//L'horodatage (Time stamp) de l'événement, en millisecondes. Si ce paramètre est 0, le système fournira son propre horodatage.
    	iTimeMs est un entier sans signe sur 4 octets
    	//32-bit Information supplémentaire concernant l'évènement clavier.
    	iExtraInfo est un entier sans signe sur 8 octets
    FIN
     
    str_HARDWAREINPUT est une structure
    	iUMsg est un entier sans signe sur 4 octets
    	iParamL est un entier sans signe sur 2 octets
    	iParamH est un entier sans signe sur 2 octets
    FIN
     
    //str_MOUSEKEYBDHARDWAREINPUT est une structure
    	//Input souris
    	//st_MOUSEINPUT est un str_MOUSEINPUT
    	//Input clavier
    	//st_KEYBDINPUT est un str_KEYBDINPUT
    	//Input hardware
    	//st_HARDWAREINPUT est un str_HARDWAREINPUT
    //fin  
     
    iDimension est un entier sans signe sur 4 octets
    iTailleOctets est un entier sur 4 octets
     
    //Number of events that it successfully inserted into the keyboard or mouse input stream
    iResult est un entier sur 4 octets
     
    st_KEYBDINPUT est une str_KEYBDINPUT
    st_HARDWAREINPUT est une str_HARDWAREINPUT
     
    //====================================================================
     
    st_MOUSEINPUT est une str_MOUSEINPUT
     
    str_INPUT est une structure
    	iType est un entier sans signe sur 4 octets
    	st_MOUSEINPUT est une str_MOUSEINPUT
    	//st_MOUSEINPUT est un tableau fixe de 1 str_MOUSEINPUT
    FIN 
     
    st_MOUSEINPUT:iX = 2
    st_MOUSEINPUT:iY = 2
    st_MOUSEINPUT:iMouseData = 0
    st_MOUSEINPUT:iFlags = 513
    st_MOUSEINPUT:iTimeMs = 0
    st_MOUSEINPUT:iExtraInfo = 0 
     
    st_INPUT est une str_INPUT
    st_INPUT:iType = 1
    st_INPUT:st_MOUSEINPUT = st_MOUSEINPUT
     
    tInput est un tableau de 1 str_INPUT
    tInput[1] = st_INPUT
     
    //-----------------------------------
     
    iDimension = 0
    iTailleOctets = Taille(&tInput)
     
    iResult = API("USER32","SendInput",iDimension,&tInput,iTailleOctets)
    SI iResult = 0 ALORS
    	Info(ErreurInfo(errComplet))
    SINON
    	Info("OK")
    FIN
     
    Trace(iResult)
     
    //-----------------------------------
     
    tInput_INT1 est un tableau de 1 entier système
    tInput_INT1[1] = &tInput
     
    iDimension = 0
    iTailleOctets = Taille(&tInput)
     
    iResult = API("USER32","SendInput",iDimension,&tInput_INT1,iTailleOctets)
    SI iResult = 0 ALORS
    	Info(ErreurInfo(errComplet))
    SINON
    	Info("OK")
    FIN
     
    Trace(iResult)
     
    //-----------------------------------
     
    iDimension = 0
    iTailleOctets = Taille(&st_INPUT)
     
    iResult = API("USER32","SendInput",iDimension,&st_INPUT,iTailleOctets)
    SI iResult = 0 ALORS
    	Info(ErreurInfo(errComplet))
    SINON
    	Info("OK")
    FIN
     
    Trace(iResult)
     
    //====================================================================
     
    str_INPUT_INT est une structure
    	iType est un entier sans signe sur 4 octets
    	st_MOUSEINPUT est un entier système
    FIN
     
    st_MOUSEINPUT:iX = 2
    st_MOUSEINPUT:iY = 2
    st_MOUSEINPUT:iMouseData = 0
    st_MOUSEINPUT:iFlags = 513
    st_MOUSEINPUT:iTimeMs = 0
    st_MOUSEINPUT:iExtraInfo = 0 
     
    st_INPUT_INT est une str_INPUT_INT
    st_INPUT_INT:iType = 1
    st_INPUT_INT:st_MOUSEINPUT = &st_MOUSEINPUT
     
    //-----------------------------------
     
    tInput_INT est un tableau de 1 str_INPUT_INT
    tInput_INT[1] = st_INPUT_INT
     
    iDimension = 0
    iTailleOctets = Taille(&tInput_INT)
     
    iResult = API("USER32","SendInput",iDimension,&tInput_INT,iTailleOctets)
    SI iResult = 0 ALORS
    	Info(ErreurInfo(errComplet))
    SINON
    	Info("OK")
    FIN
     
    Trace(iResult)
     
    //-----------------------------------
     
    tInput_INT2 est un tableau de 1 entier système
    tInput_INT2[1] = &st_INPUT_INT
     
    iDimension = 0
    iTailleOctets = Taille(&tInput_INT2)
     
    iResult = API("USER32","SendInput",iDimension,&tInput_INT2,iTailleOctets)
    SI iResult = 0 ALORS
    	Info(ErreurInfo(errComplet))
    SINON
    	Info("OK")
    FIN
     
    Trace(iResult)
     
    //-----------------------------------
     
    iDimension = 0
    iTailleOctets = Taille(&st_INPUT)
     
    iResult = API("USER32","SendInput",iDimension,&st_INPUT_INT,iTailleOctets)
    SI iResult = 0 ALORS
    	Info(ErreurInfo(errComplet))
    SINON
    	Info("OK")
    FIN
     
    Trace(iResult)
    Merci d'avance !

  2. #2
    Membre chevronné
    Avatar de mogwai162
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Points : 1 860
    Points
    1 860
    Par défaut
    Et tu ne peux pas utiliser la fonction EnvoiieTouche ?
    Patrick Catella

    Je ne réponds pas aux messages privés si ceux ci suivent un sujet. Il est préférable pour tous de poursuivre la discussion dans le sujet d'origine.

    Je suis Concepteur développeur Windev (10 ans) et Windev mobile (4 ans) en recherche d'emploi. J'etudie toute proposition

  3. #3
    Membre actif
    Inscrit en
    Août 2005
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 96
    Points : 205
    Points
    205
    Par défaut SendInput ou Mouse_Event : Sélection / Surlignage de texte
    Je voudrait envoyer une action simplement aux coordonnées X et Y de l'écran.
    Je vais essayer tout de même avec EnvoiTouche.

    Je précise que j'ai déjà utilisé Mouse_Event et que cela fonctionne très bien pour les déplacements souris et les clics.

    Le problème étant que je n'arrive pas à sélectionner du texte avec Mouse_Event donc je souhaiterai essayer avec SendInput, qui, de plus, est conseillé par MSDN en remplacement de Mouse_Event.

    Essai de sélection de texte (qui ne fonctionne pas) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    _iX est un entier = 50
    _iY est un entier = 50
     
    AppelDLL32("user32","SetCursorPos",_iX,_iY)
     
    //Le champ texte se trouve en dessous du curseur
     
    Multitâche(10)
     
    //Bouton gauche enfoncé
     
    API("user32","mouse_event",MOUSEEVENTF_LEFTDOWN,_iX,_iY,0,0)
     
    Multitâche(10)
     
    //Déplacement horizontal du curseur
    _iX += 50
     
    AppelDLL32("user32","SetCursorPos",_iX,_iY)
     
    Multitâche(10)
     
    //Bouton gauche relaché
     
    API("user32","mouse_event",MOUSEEVENTF_LEFTUP,_iX,_iY,0,0)
    Nb : L'utilisation de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    API("user32","mouse_event",MOUSEEVENTF_MOVE+MOUSEEVENTF_ABSOLUTE,_iX,_iY,0,0)
    en remplacement de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AppelDLL32("user32","SetCursorPos",_iX,_iY)
    ne change rien à l'affaire.

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/03/2010, 17h09
  2. Utilisation du workload TPCC pour simuler un algorithme
    Par M_Dandouna dans le forum Débuter
    Réponses: 0
    Dernier message: 30/05/2008, 18h57
  3. Réponses: 4
    Dernier message: 29/04/2008, 15h46
  4. Réponses: 2
    Dernier message: 17/02/2008, 09h42
  5. Utiliser le port parallele pour simuler un digicode
    Par nonoRedDevils dans le forum Assembleur
    Réponses: 8
    Dernier message: 30/12/2003, 13h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo