[R] autoriser copie uniquement dans les champs password

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
davzell
Niveau 5
Niveau 5
Messages : 105
Enregistré le : jeu. 26 sept. 2013 14:15
Status : Hors ligne

[R] autoriser copie uniquement dans les champs password

#1

Message par davzell »

salut a tous,

voila j'aimerai faire un petit programme pour me permettre de sauvegarder un mot de passe que tapera un utilisateur et pouvoir ensuite le coller ailleurs.

J'aimerai qu'il soit possible de le coller uniquement dans les champs mot de passe (avec les petites étoiles :) ) afin de ne pas le coller n'importe ou et que le mot de passe apparaisse en clair.

est ce qu'il y a un moyen d'identifier facilement les champs de mot de passe ou est ce que cela dépend de la fenêtre ou l'on colle le mot de passe ?


merci d'avance
Modifié en dernier par davzell le jeu. 17 juil. 2014 16:10, 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: [..] autoriser copie uniquement dans les champs password

#2

Message par mikell »

ça dépend surtout de la manière de "sauvegarder" le mdp et de la méthode utilisée pour le "coller" ailleurs
Tu peux par exemple utiliser un cryptage à la sauvegarde, et pour le champ un GuiCtrlCreateInput qui sera le seul à savoir décrypter grâce à une pitite fonction personnelle :mrgreen:
" 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
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] autoriser copie uniquement dans les champs password

#3

Message par orax »

davzell a écrit :est ce qu'il y a un moyen d'identifier facilement les champs de mot de passe ou est ce que cela dépend de la fenêtre ou l'on colle le mot de passe ?
Un contrôle Edit aura le stlye $ES_PASSWORD. Il pourrait y avoir des exceptions (dans la page d'un navigateur par exemple).
Appendix > GUI Control Styles > Edit/Input Styles
$ES_PASSWORD 0x0020 Displays an asterisk (*) for each character that is typed into the edit control.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] autoriser copie uniquement dans les champs password

#4

Message par jguinch »

Pour récupérer le style d'un contrôle (même hors de la GUI), il y a _WinAPI_GetWindowLong()
Il suffit alors de tester si $ES_PASSWORD est présent avec un BitAnd :

Code : Tout sélectionner

$hwnd = GUICtrlGetHandle($input) ; pour une GUI AutoIt
; $hwnd = ControlGetHandle(....) ; pour une fenêtre externe
If BitAnd(_WinAPI_GetWindowLong($hwnd, $GWL_STYLE), $ES_PASSWORD) Then
    ConsoleWrite("Le style $ES_PASSWORD est affecté a $input")
EndIf
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] autoriser copie uniquement dans les champs password

#5

Message par mikell »

jguinch j'émets des réserves pour un GUICtrlGetHandle sur un controle hors-gui
" 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
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] autoriser copie uniquement dans les champs password

#6

Message par jguinch »

Oui Mikell, tu fais bien de le préciser. J'ai édité pour plus de clarté.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] autoriser copie uniquement dans les champs password

#7

Message par mikell »

Cela dit un ControlGetHandle n'est pas mal non plus :mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
davzell
Niveau 5
Niveau 5
Messages : 105
Enregistré le : jeu. 26 sept. 2013 14:15
Status : Hors ligne

Re: [..] autoriser copie uniquement dans les champs password

#8

Message par davzell »

bon je pense que c'est très compliqué pour moi d'y arriver mais j'essaye quand même avec ce que vous m'avez donner.

Pour mes tests j'essaye sur la fenêtre d'outlook ou il faut entre un mot de passe de savoir si elle est crypté ou non

est ce que j'utilise correctement le bout de code que vous m'avez donné et mon script ne retrouve pas le champ a vérifier ou alors est ce que je n'ai pas du tout compris :) ?

merci

Code : Tout sélectionner

#include <WindowsConstants.au3>
#include <Constants.au3>
#include <EditConstants.au3>
#include <WinAPI.au3>

$window = "[CLASS:RichEdit20WPT; INSTANCE:7]"
$hwnd = ControlGetHandle($window, "", "") ; pour une fenêtre externe

If BitAnd(_WinAPI_GetWindowLong($hwnd, $GWL_STYLE), $ES_PASSWORD) Then
;~     ConsoleWrite("Le style $ES_PASSWORD est affecté a $input")
    MsgBox(0, "info2", "OK crypté")
Else
    MsgBox(0, "info3", "KO pas crypté")
EndIf
info sur la fenêtre à vérifier
http://imageshack.us/photo/my-images/912/3ea733.jpg
Image
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] autoriser copie uniquement dans les champs password

#9

Message par jguinch »

Plutôt ça :

Code : Tout sélectionner

$window = "Ajouter un compte"
$hwnd = ControlGetHandle($window, "", "[CLASS:RichEdit20WPT; INSTANCE:7]") ; pour une fenêtre externe
 
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
davzell
Niveau 5
Niveau 5
Messages : 105
Enregistré le : jeu. 26 sept. 2013 14:15
Status : Hors ligne

Re: [..] autoriser copie uniquement dans les champs password

#10

Message par davzell »

jguinch a écrit :Plutôt ça :

Code : Tout sélectionner

$window = "Ajouter un compte"
$hwnd = ControlGetHandle($window, "", "[CLASS:RichEdit20WPT; INSTANCE:7]") ; pour une fenêtre externe
 
effectivement c'est nikel merci, mieux que ce que je pensais même vu que je vais pouvoir restreindre qu'a certains type de fenêtre.

Pour envoyer du text dans mon champ par contre on peut utiliser quoi comme fonction ? est ce qu'il y a un GUICtrlSetData pour les applications tierce ?

merci
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] autoriser copie uniquement dans les champs password

#11

Message par mikell »

Il y a ControlSetText ou ControlSend
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
davzell
Niveau 5
Niveau 5
Messages : 105
Enregistré le : jeu. 26 sept. 2013 14:15
Status : Hors ligne

Re: [..] autoriser copie uniquement dans les champs password

#12

Message par davzell »

et bien merci :)
Répondre