[R] Connaitre au travers d'une variable les touches souris

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
alibert
Niveau 2
Niveau 2
Messages : 27
Enregistré le : lun. 05 déc. 2011 12:35
Status : Hors ligne

[R] Connaitre au travers d'une variable les touches souris

#1

Message par alibert »

Bonsoir,
Avec la fonction _IsPressed(...) j'essai d'avoir une variable pour faire un choix avec SELECT.
le code de départ:

Code : Tout sélectionner

#include <Misc.au3>

$vDLL = DllOpen("user32.dll")

While 1
    Sleep ( 250 )
    ; If  _IsPressed("23", $vDLL) Then
    If _IsPressed($sHexKey , $vDLL ) Then
        MsgBox(0,"_IsPressed", $sHexKey)
        ExitLoop
    EndIf
WEnd
DllClose($vDLL)
J'ai essayé différent code , mais chaque fois j'ai une erreur.
J'ai essayé de définir une variable qui prend la valeur de IsPressed(...., j'ai essayé de mettre cette instruction directement dans select. etc.

J'ai essayé aussi de faire une copie de trois codes identiques, mais avec "01" "02" "04" pour le choix du bouton, mais on dirait que la valeur est perdue pour tester les 2 "fonctions" suivantes, je veux dire "02" et "04".
Est-ce que la valeur est aussitôt perdues après avoir été lues une fois, (d'où l'essai de l'utilisation d'une variable.)

Merci pour votre éventuelle intervention.
Salutation.
Modifié en dernier par alibert le lun. 27 févr. 2012 12:05, modifié 1 fois.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Connaitre au travers d'une variable les touches sou

#2

Message par jchd »

Ton code pose la question suivante : est-ce la touche dont le code n'est pas défini est appuyée ou pas ?
Donne une valeur à $hexKey et _IsPressed pourra répondre, sinon ...

En fait une variable non explicitement initialisée vaut 0 ou "" mais ce n'est guère prudent de ne pas la déclarer.
Met ces deux lignes en tête de tous tes scripts :

Code : Tout sélectionner

#AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
Opt('MustDeclareVars', 1)
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
alibert
Niveau 2
Niveau 2
Messages : 27
Enregistré le : lun. 05 déc. 2011 12:35
Status : Hors ligne

Re: [..] Connaitre au travers d'une variable les touches sou

#3

Message par alibert »

Bonsoir,
Merci pour la réponse.
La 1ère ligne je ne la comprend pas. J'ai fait les déclaration comme vous me l'avez demandé. J'ai réussi à faire un code qui marche après bien des tentatives.
En faite pour moi, il s'agit d'avoir les touches souris dans Panoramic. Celui fait le traitement évènementiel des clics gauches, mais non des autres touches. Ce n'est pas encore programmé. J'ai réussi à importer les testes des 3 boutons, et ça fonctionne.
Je mets une partie du code pour montrer comment je m'en suis sorti:

Code : Tout sélectionner

While 1
    $handle = WinGetHandle("classname=TListBox", "INSTANCE 1")
    Sleep(200)

    $a1 = _IsPressed("01", $dll)
    $a2 = _IsPressed("02", $dll)
    $a3 = _IsPressed("04", $dll)

    ;ClipPut("$shexkey=" & $a)
    ;On récupère les coordonnées de la souris.
    $Souris = MouseGetPos()
    If $Souris[0] > $x And $Souris[0] < ($x + $w) And $Souris[1] > $y And $Souris[1] < ($y + $h) Then


        If $a1 = True Then
            Send("{tab}1")
            $handle = WinGetHandle("classname=TListBox", "INSTANCE 1")
            MouseClick("left")
        EndIf
Mais maintenant il me reste un gros problème, et je sais que j'ai une solution ces jours-ci (mais où), je ne peux pas cliquer sans qu'il y ait une sélection du texte, sur Scite ou autre. Si je me rappel bien, ce serait la touche <shift> qui resterait bloqué.
Je ne sais plus où trouver la solution, et le pourquoi de la chose.

Merci, si vous connaissez la réponse. (et merci quand même, il n'y a pas de raison)
Cordialement.

Ps: en regardant le code, je me rappel que j'ai du passer par le presse papier, pour avoir la valeur d'une variable sans la boite de message, et de le récupérer depuis l'autre côté.
Comment affiche t'on du texte dans ce que je crois un edit, pour déboguer un programme.?
Là bonne nuit!
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [..] Connaitre au travers d'une variable les touches sou

#4

Message par ZDS »

Bonjour,

Je pense avoir compris ta question et ton besoin, mais franchement je suis sûr que tu vas te casser les dents dessus... Bref, voici une ébauche de script (Attention ça pique les yeux, code dégueu! mais la demande y oblige) :
► Afficher le texteDétecteur de valeurs
A bientôt.

EDIT: Mouais, pas faux. Je voyais plus ça comme une aide sur un outil type Au3Info (je m'étais déjà créé un script du genre à utiliser dans mes IDE). Mais c'est compréhensible et légitime comme censure.
Modifié en dernier par ZDS le mar. 06 déc. 2011 11:27, modifié 2 fois.
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Connaitre au travers d'une variable les touches sou

#5

Message par sylvanie »

zeshrek a été plus rapide que moi ^^
Toujours penser à ce que peux devenir un code entre d'autres mains. L'enfer est pavé de bonnes intentions ...
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] Connaitre au travers d'une variable les touches sou

#6

Message par zeshrek »

Je suis l'ogre qui censure plus vite que son ombre :D
En fait, je lis les posts en me metant dans la peau de qqun qui a de mauvaises intentions (mauvaises vis a vis de la charte du fofo, je ne crois pas au mal ou au bien en tant que valeur absolue). Et si je trouve mon bonheur, hop, le modo sort de sa boite.
Et comme j'ai naturelement l'esprit tordu et pervert, doublé d'un détecteur de bot et keyloger ultrasensible, bah voilà :D
Si vis pacem para bellum
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Connaitre au travers d'une variable les touches sou

#7

Message par mikell »

Dans un petit jeu avec des lettres j'avais utilisé cette méthode bourrin (qui n'avait pas été censurée) pour définir une variable 'touche'
► Afficher le texte
et qu'on peut certainement optimiser avec des arrays
ça marchait pas mal
Modifié en dernier par zeshrek le mar. 06 déc. 2011 14:47, modifié 5 fois.
Raison : C'est pas parceque c'est passé un fois, qu'on va récidiver. Au pire, il a qu'a utiliser la recherche puisque tu l'avais déjà posté
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
alibert
Niveau 2
Niveau 2
Messages : 27
Enregistré le : lun. 05 déc. 2011 12:35
Status : Hors ligne

Re: [..] Connaitre au travers d'une variable les touches sou

#8

Message par alibert »

Bonjour à tous.
Merci pour vos réponses..
Seulement j'en suis encore au point de départ. Je ne sais pas ce que l'on cherche à faire.
J'ai de vrais problèmes, et je ne trouve pas de solution.
Vous parlez de keyloger ou je ne sais pas quoi. J'ai pas l'habitude de voir ce genre de chose, sur le site que j'ai l'habitude d'intervenir. D'ailleurs en Pa... ce n'est pas possible de faire les trucs qu'on peut faire ici.
Tout le monde peut se tromper, surtout moi.
Là depuis j'ai un vrai problème. Je n'arrive pas à forcer l'affichage du n° du bouton de la souris: 1, 2 ou 4 dans un edit de mon programme en Pano...
Le handle de la fenêtre ok ça marche. Mais dans une boucle, je dois lire les clics de la souris, non pas la position, mais quel bouton est pressé, vu qu'en Panoramic, seul le clic gauche est évènementiel, et je voudrais l'étendre aux deux autres boutons. Cela fonctionnait mais la position des objets dans un GUI ne serait surement pas conforme au programme teste. Ce que j'ai prévu, est de mettre l'objet de réception en Pano, en premier dans le code, pour le retrouver de suite,parmis les autres objets.
Pour les clics, cela marche, mais avec SEND je n'atteins pas l'EDIT de l'autre programme pour le passage de paramètres. (à noter qu'un edit en Pano.. ne possède qu'une ligne, et c'est memo qui se rempli de texte).

Sur notre site, dont je n'ai pas à faire de publicité, on se rend service au mieux, et je pense que la même volonté existe ici.
J'espère que je ne suis pas trop dur sur ce que je dis, et si je me sors bien avec Autoit, il se pourrait que je migre ici pour les programme important, vu qu'il me manque encore pleins de commandes non codées (et c'est pas de la faute de l'auteur, mais il est débordé, d'autant qu'il part souvent à l'étranger)

Le fait que cela ne marche plus est la preuve que j'ai bénéficié du hasard, et que je n'ai pas parfaitement compris.

Pour l'instant, pour ne pas vous surcharger, j'ai besoin de ce renseignement et qui soit efficace.
Merci pour votre attention!
Cordialement
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Connaitre au travers d'une variable les touches sou

#9

Message par sylvanie »

si l'application cible est écrite en autoit, on dispose de la macro : @GUI_CtrlId
Mais j'ai l'impression que ce n'est pas le cas.

Il y a sinon ce code qui ressemble pas mal à ce que fait Au3info pour les fenêtres autres que les scripts Autoit :
http://www.autoitscript.com/forum/topic ... ntry943946
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
alibert
Niveau 2
Niveau 2
Messages : 27
Enregistré le : lun. 05 déc. 2011 12:35
Status : Hors ligne

Re: [..] Connaitre au travers d'une variable les touches sou

#10

Message par alibert »

Bonsoir,
Merci sylvanie.
Pour faire plaisir au membre du site dont je fais partie depuis plus de 3 ans, j'ai tout retiré.
Ils se disent qu'il pourrait y avoir des représailles, alors qu'ils n'y sont pour rien.
Est-ce l'intelligence l'emportera?
Comme je l'ai déjà dit, tout le monde peut se tromper.
Répondre