[R] Probleme avec Send des caractères sont remplacés

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
jl56
Niveau 7
Niveau 7
Messages : 411
Enregistré le : mer. 24 oct. 2007 22:42
Localisation : 56000
Status : Hors ligne

[R] Probleme avec Send des caractères sont remplacés

#1

Message par jl56 »

Bonjour à tous,


J'utilise depuis des années un script pour saisir le user et le mot de passe automatiquement.

Depuis a peu prés le début d'année c'est devenu moins fiable (maj Windows!) certain caractères sont modifiés un 3 devient un " , un M devient m ..

ci joint mon code qui traite cette action
une fois exécuté placez vous dans un notepad puis appuyez sur les touches CRTL SHIFF u pour saisir le user puis CTRL SHIFF pour le MDP
répétez cette action pour voir le problème


#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>


Opt("SendKeyDelay", 5)
Opt("SendKeyDownDelay", 5)
Opt("SendAttachMode", 0)

Global $mdp = "Ms932wj:5,LWr.Msç32wj:5,LWr.Ms93"
Global $skd = 5
Global $skdd = 5
Global $sam = 0
Global $nbr = 10
Global $user = "User222935User"

HotKeySet("^+p", "ctrlaltp") ; ctrl-alt-p
HotKeySet("^+u", "crtlaltu") ; crtlaltu()

#Region ### START Koda GUI section ### Form=C:\pi\forum\test_envoie_touche.kxf
Global $Form1 = GUICreate("Form1", 492, 224, 192, 124)
Global $Inp_skd = GUICtrlCreateInput("", 120, 30, 121, 21)
Global $Inp_skdd = GUICtrlCreateInput("", 120, 54, 121, 21)
Global $Inp_nbr = GUICtrlCreateInput("", 336, 81, 121, 21)
Global $Checkbox1 = GUICtrlCreateCheckbox("SendAttachMode", 123, 87, 97, 17)
Global $Label1 = GUICtrlCreateLabel("SendKeyDelay", 15, 27, 74, 17)
Global $Label2 = GUICtrlCreateLabel("SendKeyDownDelay", 15, 57, 102, 17)
Global $Label3 = GUICtrlCreateLabel("Nombre d'envoie", 240, 84, 84, 17)
Global $Inp_mdp = GUICtrlCreateInput("", 108, 114, 292, 21)
Global $Label4 = GUICtrlCreateLabel("Mot de passe", 15, 114, 68, 17)
Global $Inp_test = GUICtrlCreateInput("", 108, 150, 292, 21)
Global $Inp_error = GUICtrlCreateInput("", 108, 186, 121, 21)
Global $Label5 = GUICtrlCreateLabel("Nombre d'erreur", 12, 192, 79, 17)
Global $Label6 = GUICtrlCreateLabel("Test", 18, 156, 25, 17)
Global $But_test = GUICtrlCreateButton("Test erreur", 405, 147, 78, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

GUICtrlSetData($Inp_skd, $skd)
GUICtrlSetData($Inp_skdd, $skdd)
GUICtrlSetData($Inp_nbr, $nbr)
GUICtrlSetData($Inp_mdp, $mdp)

$erreur = 0
While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $GUI_EVENT_CLOSE
         Exit


      Case $Inp_skd
         $skd = GUICtrlRead($Inp_skd)
         Opt("SendKeyDelay", $skd)

      Case $Inp_skdd
         $skdd = GUICtrlRead($Inp_skdd)
         Opt("SendKeyDelay", $skdd)

      Case $Inp_nbr
         $nbr = GUICtrlRead($Inp_nbr)

      Case $Checkbox1
         If _IsChecked($Checkbox1) Then
            $sam = 1
         Else
            $sam = 0
         EndIf
         Opt("SendAttachMode", $sam)


      Case $Inp_mdp
         $mdp = GUICtrlRead($Inp_mdp)

      Case $But_test
         ControlFocus($Form1, "", $Inp_test)
         For $i = 1 To $nbr
            _envoie()
            If GUICtrlRead($Inp_test) <> $mdp Then
               $erreur = $erreur + 1
               GUICtrlSetData($Inp_error, $erreur)
            EndIf
            GUICtrlSetData($Inp_test, "")
         Next

   EndSwitch
WEnd


Asc

Func ctrlaltp()
   For $i = 1 To $nbr
      _envoie()
   Next
EndFunc   ;==>ctrlaltp

Func _envoie()

   Send($mdp, 1)
   Send("{SHIFTDOWN}")
   Sleep(10)
   Send("{SHIFTUP}")

   Send("{CTRLDOWN}")
   Sleep(10)
   Send("{CTRLUP}")
   Sleep(10)
   Send("{CTRLUP}")
   Send("{SHIFTUP}")

   Sleep(50)
   Send("{ENTER}")

EndFunc   ;==>_envoie


Func crtlaltu()
;~    MsgBox($avant_plan, "CRTL u OK",$mp_user)
   Send($user, 1)
   Sleep(100)
   Send("{TAB}")
   Send("{SHIFTDOWN}")
   Sleep(10)
   Send("{SHIFTUP}")

   Send("{CTRLDOWN}")
   Sleep(10)
   Send("{CTRLUP}")
   Sleep(10)
   Send("{CTRLUP}")
   Send("{SHIFTUP}")

EndFunc   ;==>crtlaltu

Func _IsChecked($control)
   Return BitAND(GUICtrlRead($control), $GUI_CHECKED) = $GUI_CHECKED
EndFunc   ;==>_IsChecked
 



exemple de retour
User222935User Ms932wj:5,LWr.Msç32wj:5,LWr.Ms93
User22é935User Ms932wj:5,LWr.Msç32wj:5,LWr.Ms93
User2é2935User Ms932wj:5,LWr.Msç32wj:5,LWr.Ms93
User222935User Ms932wj:5,LWr.Msç32wj:5,LWr.Ms93
User222935User Ms932wj:5,LWr.Msç32wj:5,LWr.Ms93
User222935User Ms9"2wj:5,LWr.Msç32wj:5,LWr.Ms93
pour le user
A la 2 èmm ligne le troisième 2 est devenu un é
A la 3 èmm ligne le deuxième 2 est devenu un é

pour le mot de passe le 1er chiffre 3 est devenu un " sur la dernière ligne

J'ai tenté de modifier les délais sans résultat, ça le fait que quand on manip au clavier CTRL SHIFF u , CTRL SHIFF p ....

Voila si vous avez des suggestions SVP sur une correction ou une autre méthode

Je vous remercie

Jean-luc
Modifié en dernier par jl56 le lun. 08 mai 2023 15:14, modifié 1 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Probleme avec Send des caractères sont remplacés

#2

Message par mikell »

Hum ça envoie des minuscules au lieu de majuscules, si " ^+ " ne marche pas tu devrais peut-être changer de hotkeys
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Nine
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 103
Enregistré le : ven. 17 avr. 2020 01:23
Status : Hors ligne

Re: Probleme avec Send des caractères sont remplacés

#3

Message par Nine »

J'ai déjà vu ce problème dans le passé lorsque que des caractères numériques étaient remplacés par leurs caractères SHIFT. La solution était de bloquer le clavier durant le SEND pour qu'aucun autre programme (ou utilisateur) puisse presser des clés impromptues.

J'ai un UDF qui fait ce travail sans UAC. Voici le lien ==> https://www.autoitscript.com/forum/topi ... ckinputex/
Avatar du membre
jl56
Niveau 7
Niveau 7
Messages : 411
Enregistré le : mer. 24 oct. 2007 22:42
Localisation : 56000
Status : Hors ligne

Re: Probleme avec Send des caractères sont remplacés

#4

Message par jl56 »

Bonjour,

Merci pour vos retours

@Mikell
j'ai tenté une autre séquence de touhe CTRL ALT ça semble mieux fonctionner mais je n'ai pas suffisamment de recul pour confirmer. Par contre réapprendre à ma main une nouvelle séquence que j'utilise depuis presque 10 ans Hum on verra.

@Nine
Votre UDF m'intéresse beaucoup car je paramètre des switches en envoyant les commandes via Send dans une session putty
Bloquer le clavier pendant le paramétrage je prends
j'ai modifié mon script d'exemple ci-dessus
Func _envoie()
_BlockInput($BI_DISABLE)

   Send($mdp, 1)
   ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $mdp = ' & $mdp & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
   Send("{SHIFTDOWN}")
   Sleep(10)
   Send("{SHIFTUP}")

   Send("{CTRLDOWN}")
   Sleep(10)
   Send("{CTRLUP}")
   Sleep(10)
   Send("{ALTDOWN}")
   Sleep(10)
   Send("{ALTUP}")
   Sleep(10)
   Send("{CTRLUP}")
   Send("{SHIFTUP}")
   Send("{ALTUP}")

   Sleep(50)
   Send("{ENTER}")

_BlockInput($BI_ENABLE)
EndFunc   ;==>_envoie


Mettre la boucle a 1
le CTRL SHIFT u envoie bien le user sur mon notepad mais lors de l'appui sur CTRL SHIFT p ça n'envoie plus le mot de passe alors que ça s’inscrit bien dans la console donc la séquence de touche fonctionne.

Vous avez une suggestion SVP ?

Merci

Cordialement,

Jean-Luc
Avatar du membre
jl56
Niveau 7
Niveau 7
Messages : 411
Enregistré le : mer. 24 oct. 2007 22:42
Localisation : 56000
Status : Hors ligne

Re: Probleme avec Send des caractères sont remplacés

#5

Message par jl56 »

Bonjour,

J'ai avec votre aide résolu mon problème

j'ai voulu tester CHATGPT et il m'a indiqué la fonction (BLOCKINPUT) je n'avait pas vu quelle était déjà intégré

Le morceau de code donnes ceci
HotKeySet("^+p", "SendKeys")

While 1
    Sleep(100)
WEnd

Func SendKeys()
   BlockInput(1)
    Send("Ms932wj:5,LWr.Msç32wj:5,LWr.Ms93")
   Sleep(50)
   Send("{CTRLDOWN}{SHIFTDOWN}")
       Sleep(100)
    Send("{CTRLUP}{SHIFTUP}")
   Sleep(50)
   Send("{ENTER}")
   BlockInput(0)
EndFunc
Cordialement,

JL56
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [R] Probleme avec Send des caractères sont remplacés

#6

Message par TommyDDR »

Si jamais, vous pouvez aussi appeler une fonction qui remplacera tous les chiffres par {NUMPADX} (X étant le chiffre à remplacer) avec ça, plus de soucis de "2" qui se transforme en "é"
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
jl56
Niveau 7
Niveau 7
Messages : 411
Enregistré le : mer. 24 oct. 2007 22:42
Localisation : 56000
Status : Hors ligne

Re: [R] Probleme avec Send des caractères sont remplacés

#7

Message par jl56 »

Bonjour,

Merci pour votre réponse mais j'ai également des majuscule qui passe en minuscule

Je note l'info pour d'autre application

Cordialement,

Jean-Luc
jpascal
Niveau 6
Niveau 6
Messages : 226
Enregistré le : jeu. 16 oct. 2008 16:21
Status : Hors ligne

Re: [R] Probleme avec Send des caractères sont remplacés

#8

Message par jpascal »

TommyDDR a écrit : lun. 08 mai 2023 20:58 Si jamais, vous pouvez aussi appeler une fonction qui remplacera tous les chiffres par {NUMPADX} (X étant le chiffre à remplacer) avec ça, plus de soucis de "2" qui se transforme en "é"
Rencontrant parfois le problème malgré l'utilisations de l'UDF BlockInputEX, je vous remercie pour cette astuce. :-)
AutoIt 3.3.16.1 - AutoIt3Wrapper 21.316.1639.1
Répondre