Page 1 sur 1

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

Posté : dim. 23 avr. 2023 17:24
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

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

Posté : lun. 24 avr. 2023 14:43
par mikell
Hum ça envoie des minuscules au lieu de majuscules, si " ^+ " ne marche pas tu devrais peut-être changer de hotkeys

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

Posté : mer. 26 avr. 2023 15:05
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/

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

Posté : sam. 06 mai 2023 14:21
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

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

Posté : lun. 08 mai 2023 15:14
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

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

Posté : lun. 08 mai 2023 20:58
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 "é"

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

Posté : mar. 09 mai 2023 18:27
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

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

Posté : mer. 21 juin 2023 11:33
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. :-)