[UDF] _StringGen (Générateur de caractères avec options)
Posté : dim. 13 oct. 2013 09:55
par noman
Slt.
Voici une fonction qui permet de générer une chaine de caractères "aléatoire" avec options.
Elle peut générer au choix :
Des lettres : ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Des chiffres : 0123456789
Des caractères spéciaux : !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
Des chiffres et des lettres
Tout les caractères
La fonction permet aussi de définir la longueur de la chaine.
Voici un petit exemple de générateur de mot de passe.
Voici une fonction qui permet de générer une chaine de caractères "aléatoire" avec options.
Elle peut générer au choix :
Des lettres : ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Des chiffres : 0123456789
Des caractères spéciaux : !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
Des chiffres et des lettres
Tout les caractères
La fonction permet aussi de définir la longueur de la chaine.
► Afficher le texteFonction _StrinGen
Code : Tout sélectionner
#include-once
;#FUNCTION# ===================================================================
; Nom ...........: _StringGen
; Description ...: Générateur de caractères avec options.
; Syntaxe .......: _StringGen([$Opt = 0 [, $SLen = 1]])
;
; Paramètres ....: $Opt - Option de sélection des caractères à utiliser
; |0 - Utiliser tout les caractères disponible.
; |1 - Utiliser uniquement des lettres.
; |2 - Utiliser uniquement des chiffres.
; |3 - Utiliser uniquement des caractères spéciaux.
; |4 - Utiliser uniquement des lettres et des chiffres.
;
; $SLen - Longueur de la chaine de caractères.
;
; Return values .: Réussite - retourne la chaine de caractères générée.
; - @error =
; |0
;
; Echec - retourne -1
; - @error =
; |1 - $Opt doit être un chiffre.
; |2 - $SLen doit être un chiffre.
; |3 - $Opt ne peut pas être plus grand que 4.
; |4 - $SLen doit être plus petit que 1
;
; Autteur .......: noman
; Modifié .......:
; Remarques .....:
; Lien ..........:
; Exemple .......: oui
;===============================================================================
Func _StringGen($Opt = 0, $SLen = 1)
If IsNumber($Opt) <> 1 Then SetError(1, 1, -1) ;$Opt doit être un chiffre, sinon erreur.
If IsNumber($Slen) <> 1 Then SetError(2, 2, -1) ;$SLen doit être un chiffre, sinon erreur.
If $Opt > 4 Then Return SetError(3, 3, -1) ;$Opt ne peut pas être plus grand que 4, sinon erreur.
If $SLen < 1 Then Return SetError(4, 4, -1) ;$SLen doit être plus petit que 1, sinon erreur.
Local $Alpha, $Digit, $XTra, $SData
For $1 = 33 To 126 Step 1 ;Utilisation des caractères unicode de 33 à 126
If StringIsAlpha(ChrW($1)) = 1 Then
$Alpha &= ChrW($1) ;[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]
ElseIf StringIsDigit(ChrW($1)) = 1 Then
$Digit &= ChrW($1) ;[0123456789]
Else
$Xtra &= ChrW($1) ;[!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]
EndIf
Next
$Alpha = StringSplit($Alpha, '') ;Création d'un array pour contenir chaque caractères.
$Digit = StringSplit($Digit, '') ; //
$XTra = StringSplit($XTra, '') ; //
If $Opt = 4 Then Local $Rand
For $1 = 1 To $Slen
If $Opt = 0 Then
$SData &= ChrW(Random(33, 126, 1))
ElseIf $Opt = 1 Then
$SData &= $Alpha[Random(1, $Alpha[0], 1)]
ElseIf $Opt = 2 Then
$SData &= $Digit[Random(1, $Digit[0], 1)]
ElseIf $Opt = 3 Then
$SData &= $XTra[Random(1, $XTra[0], 1)]
ElseIf $Opt = 4 Then
$Rand = Random(1, 2, 1)
If $Rand = 1 Then
$SData &= $Digit[Random(1, $Digit[0], 1)]
Else
$SData &= $Alpha[Random(1, $Alpha[0], 1)]
EndIf
EndIf
Next
Return $SData
EndFunc
► Afficher le textePgen
Code : Tout sélectionner
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include '_StringGen.au3'
Opt("GUIOnEventMode", 1)
Global $Data
#Region ### START Koda GUI section ### Form=
Global $PGen = GUICreate("Pgen", 281, 271, -1, -1)
GUISetFont(8, 800, 0, "Tahoma")
GUISetOnEvent($GUI_EVENT_CLOSE, "PGen_Close")
$Group_Pass = GUICtrlCreateGroup(" Votre mot de passe ", 5, 5, 270, 155)
Global $Edit_Pass = GUICtrlCreateEdit("", 10, 25, 260, 130, BitOR($ES_AUTOVSCROLL,$ES_WANTRETURN), 0)
GUICtrlSetBkColor(-1, 0xF0F0F0)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group_Opt = GUICtrlCreateGroup(" Options ", 5, 165, 270, 70)
$Label_Opt = GUICtrlCreateLabel("Caractères à générer :", 10, 185, 130, 17)
Global $Combo_Opt = GUICtrlCreateCombo("", 140, 180, 130, 25, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, 'Lettres|Chiffres|Caractères spéciaux|Lettres et chiffres|Tout les caractères', 'Tout les caractères')
GUICtrlSetCursor (-1, 0)
GUICtrlCreateLabel("Longueur du mot de passe :", 10, 210, 160, 17, $SS_CENTERIMAGE)
Global $Input_Opt = GUICtrlCreateInput("100", 170, 210, 100, 15, BitOR($ES_CENTER,$ES_NUMBER), 0)
GUICtrlSetBkColor(-1, 0xF0F0F0)
GUICtrlCreateGroup("", -99, -99, 1, 1)
Global $Button_Gen = GUICtrlCreateButton("Générer", 5, 240, 75, 25)
GUICtrlSetCursor (-1, 0)
GUICtrlSetOnEvent(-1, "Button_Gen")
Global $Button_Save = GUICtrlCreateButton("Copier et fermer le fenêtre", 85, 240, 190, 25)
GUICtrlSetCursor (-1, 0)
GUICtrlSetOnEvent(-1, "Button_Save")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
Sleep(100)
WEnd
Func Button_Gen()
Local $Opt
Switch GUICtrlRead($Combo_Opt)
Case 'Lettres'
$Opt = 1
Case 'Chiffres'
$Opt = 2
Case 'Caractères spéciaux'
$Opt = 3
Case 'Lettres et chiffres'
$Opt = 4
Case 'Tout les caractères'
$Opt = 0
EndSwitch
$Data = _StringGen($Opt, GUICtrlRead($Input_Opt))
If $Data = -1 Then
Switch @error
Case 1
Return MsgBox(16, 'Erreur', "L'option de sélection des caractères doit être un chiffre.")
Case 2
Return MsgBox(16, 'Erreur', "L'option du nombre de caractère doit être un chiffre.")
Case 3
Return MsgBox(16, 'Erreur', "L'option de sélection des caractères doit être de 1 à 4.")
Case 4
Return MsgBox(16, 'Erreur', "L'option du nombre de caractère doit être supérieur à 1.")
EndSwitch
Else
GUICtrlSetData($Edit_Pass, '')
GUICtrlSetData($Edit_Pass, $Data)
EndIf
EndFunc
Func Button_Save()
ClipPut($Data)
PGen_Close()
EndFunc
Func PGen_Close()
Exit
EndFunc