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
 



