#include <GuiConstantsEx.au3>
#include <EditConstants.au3>
#include <APIConstants.au3>
$listpass='|password|пароль|12345|qwerty|'
$pass='12345'
$show=1
$last=$pass
$Gui = GUICreate("Введите пароль", 270, 100,-1,-1,$WS_SYSMENU)
$Input = GUICtrlCreateInput($pass, 10, 10, 220, 20, $ES_PASSWORD)
$Combo = GUICtrlCreateCombo('', 10, 10, 220, 20)
$change = GUICtrlCreateButton("@", 235, 10, 20,20)
$Button = GUICtrlCreateButton("ОК", 186, 40, 70)
$Checkbox = GUICtrlCreateCheckbox("Показать пароль", 10, 40)
GUICtrlSetState($Checkbox,BitAND($show,$GUI_CHECKED))
If BitAnd(GUICtrlRead($Checkbox),$GUI_CHECKED) Then
GUICtrlSetData($Combo,$listpass,$pass)
GUICtrlSetState($Input,$GUI_HIDE)
Else
GUICtrlSetData($Input,$pass)
GUICtrlSetState($Combo,$GUI_HIDE)
EndIf
GUISetState()
Do
Switch GUIGetMsg()
Case $change
_ChangePassword()
Case $Button
If _ChangePassword() Then ContinueLoop
$preskey=MsgBox(1+256,'Якорь', _
'$pass='&$pass&@LF& _
'$last='&$last&@LF& _
'$listpass='&$listpass&@LF& _
@LF)
If $preskey=2 Then Exit
Case $Checkbox
If BitAnd(GUICtrlRead($Checkbox),$GUI_CHECKED) Then
$pass = GUICtrlRead($Input)
GUICtrlSetState($Input,$GUI_HIDE)
GUICtrlSetState($Combo,$GUI_SHOW)
GUICtrlSetData($Combo,'')
GUICtrlSetData($Combo,$listpass,$last)
Else
$pass = GUICtrlRead($Combo)
GUICtrlSetState($Combo,$GUI_HIDE)
GUICtrlSetState($Input,$GUI_SHOW)
GUICtrlSetData($Input,$last)
EndIf
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
Until 0
; ----------------------------------------------------------------------------------------------------------
Func _ChangePassword()
$array=StringSplit($listpass,'|')
If Not BitAnd(GUICtrlRead($Checkbox),$GUI_CHECKED) Then
$pass = GUICtrlRead($Input)
If $pass = "" Then
If $array[0] > 3 Then $listpass=StringReplace($listpass,'|'&$last&'|','|')
$array=StringSplit($listpass,'|')
GUICtrlSetData($Input,$array[2])
$last=$array[2]
Else
If StringInStr($listpass,'|'&$pass&'|')=0 Then
If $array[0] < 7 Then
$listpass &=$pass&'|'
GUICtrlSetData($Input,$pass)
$last=$pass
Else
MsgBox(256,'Ошибка','Много паролей')
GUICtrlSetData($Input,$last)
Return 1
EndIf
Else
$last=$pass
EndIf
EndIf
Else
$pass = GUICtrlRead($Combo)
If $pass = "" Then
If $array[0] > 3 Then $listpass=StringReplace($listpass,'|'&$last&'|','|')
$array=StringSplit($listpass,'|')
GUICtrlSetData($Combo,'')
GUICtrlSetData($Combo,$listpass,$array[2])
$last=$array[2]
Else
If StringInStr($listpass,'|'&$pass&'|')=0 Then
If $array[0] < 7 Then
$listpass &=$pass&'|'
GUICtrlSetData($Combo,'')
GUICtrlSetData($Combo,$listpass,$pass)
$last=$pass
Else
MsgBox(256,'Ошибка','Много паролей')
GUICtrlSetData($Combo,'')
GUICtrlSetData($Combo,$listpass,$last)
Return 1
EndIf
Else
$last=$pass
EndIf
EndIf
EndIf
Return 0
EndFunc ;==> _ChangePassword()