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