Page 1 sur 1

[R] autoriser copie uniquement dans les champs password

Posté : jeu. 10 juil. 2014 10:12
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

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

Posté : jeu. 10 juil. 2014 14:44
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:

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

Posté : jeu. 10 juil. 2014 15:52
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.

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

Posté : jeu. 10 juil. 2014 16:21
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

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

Posté : jeu. 10 juil. 2014 19:53
par mikell
jguinch j'émets des réserves pour un GUICtrlGetHandle sur un controle hors-gui

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

Posté : jeu. 10 juil. 2014 20:50
par jguinch
Oui Mikell, tu fais bien de le préciser. J'ai édité pour plus de clarté.

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

Posté : jeu. 10 juil. 2014 21:24
par mikell
Cela dit un ControlGetHandle n'est pas mal non plus :mrgreen:

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

Posté : jeu. 17 juil. 2014 14:47
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

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

Posté : jeu. 17 juil. 2014 14:54
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
 

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

Posté : jeu. 17 juil. 2014 15:24
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

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

Posté : jeu. 17 juil. 2014 15:27
par mikell
Il y a ControlSetText ou ControlSend

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

Posté : jeu. 17 juil. 2014 16:10
par davzell
et bien merci :)