Простая программка. Есть возможность выбирать из каких символов будет пароль(ABC, abc, 123), все вместе или в любом соотношении. Так же настраивается длина пароля. Версия компилятора 4.31
Код:
;Глобальная переменная Global simvol$ ; Простая переменная sp=10 ;Константа окна Enumeration #Window_0 EndEnumeration ;Константы гаджетов ; Enumeration #Editor_0 #Button_0 #Button_1 #Button_2 #CheckBox_0 #CheckBox_1 #CheckBox_2 #Text_0 #Text_1 #Text_2 #spin EndEnumeration ;Шрифты Global FontID1 FontID1 = LoadFont(1, "Arial", 10) Global FontID2 FontID2 = LoadFont(2, "Arial", 8) ; процедура открытия окна Procedure Open_Window_0() If OpenWindow(#Window_0, 400, 214, 268, 101, "Генератор паролей", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar ) ; Далее размещаем гаджеты в окне EditorGadget(#Editor_0, 10, 15, 150, 35) ButtonGadget(#Button_0, 175, 15, 60, 20, "Сгенерить") ButtonGadget(#Button_1, 175, 45, 90, 32, "Скопировать пароль",#PB_Button_MultiLine) ButtonGadget(#Button_2, 250, 85, 15, 15, "?") CheckBoxGadget(#CheckBox_0, 15, 55, 20, 20, "") CheckBoxGadget(#CheckBox_1, 50, 50, 15, 30, "") CheckBoxGadget(#CheckBox_2, 85, 55, 20, 20, "") TextGadget(#Text_0, 15, 80, 15, 20, "ab") TextGadget(#Text_1, 50, 80, 15, 15, "AB") TextGadget(#Text_2, 85, 80, 15, 15, "12") SpinGadget(#spin, 120, 57, 30, 20, 0, 100,#PB_Spin_Numeric) EndIf EndProcedure ; открываем окно с помощью вызова процедуры Open_Window_0() Open_Window_0() ; Обновление текущего состояния SpinGadget SetGadgetState (#spin, sp) ; Блок с данными DataSection StringData: Data.s "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","0","1","2","3","4","5","6","7","8","9" StringData1: Data.s "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z" StringData2: Data.s "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z" StringData3: Data.s "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9" StringData4: Data.s "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","0","1","2","3","4","5","6","7","8","9" StringData5: Data.s "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z" StringData6: Data.s "0","1","2","3","4","5","6","7","8","9" EndDataSection ;Процедура чтения случайного символа из блока с данными Procedure$ readsimvol(b) d=Random(b) ;Присваеваем переменной d случайное число по значению не более заложенного в переменной b For x=0 To d Read.s simvol$ ;Читаем символы до номера d включительно, и записывает в переменную simvol$ Next x ;В переменной simvol$ сохраняется последнее значение. EndProcedure ; начало цикла Repeat ; Если произошло событие нажатия кнопки "?" , то вывести сообщение If EventID = #PB_Event_Gadget If EventGadget() = #Button_2 MessageRequester("О программе", "Автор Станислав Будинов") EndIf EndIf ; результаты гаджетов: CheckBoxGadget rez1 = GetGadgetState(#CheckBox_0) ; rez1 равен "1" или "0" rez2 = GetGadgetState(#CheckBox_1) ; rez2 равен "1" или "0" rez3 = GetGadgetState(#CheckBox_2) ; rez3 равен "1" или "0" ; Условия для чтения блока с данными(какие символы использовать в пароле) If rez1=1 And rez2=1 And rez3=1 y=0 b=61 EndIf If rez1=1 And rez2=1 And rez3=0 y=1 b=51 ; переменная b кол-во символов в блоке минус "1" для цикла EndIf ; переменная y определяет номер блока StringData (0-6) If rez1=1 And rez2=0 And rez3=0 y=2 b=25 EndIf If rez1=1 And rez2=0 And rez3=1 y=3 b=35 EndIf If rez1=0 And rez2=1 And rez3=1 y=4 b=35 EndIf If rez1=0 And rez2=1 And rez3=0 y=5 b=25 EndIf If rez1=0 And rez2=0 And rez3=1 y=6 b=9 EndIf ; если выполнится нажатие кнопки, то выполнить процедуру: readsimvol(b) ; так же выбираем нужный блок для чтения ; так же складываем символы в общую строку "sohr$" ; и пишем результат(пароль) в EditorGadget ; получаем значение(длину пароля) с помощью SpinGadget If EventID=#PB_Event_Gadget If EventGadget()=#Button_0 If rez1=0 And rez2=0 And rez3=0 ; если не отмечен ни один пункт MessageRequester("Сообщение","Выберите пожалуйста символы для вашего пароля") ;выводим сообщение Goto net ;прыгаем на метку Net: и отключаем тем самым кнопку "сгенерить". EndIf sp = GetGadgetState(#spin) ; получаем значение SpinGadget For gl=1 To sp Select y ; обнуляем счетчики чтения блока на нуль при каждом прохождении цикла Case 0 ; ну и конечно выбор нужного блока Restore StringData Case 1 Restore StringData1 Case 2 Restore StringData2 Case 3 Restore StringData3 Case 4 Restore StringData4 Case 5 Restore StringData5 Case 6 Restore StringData6 EndSelect readsimvol(b) sohr$=sohr$+simvol$ ; складываем каждый раз строку к предыдущей clip$=sohr$ ; переносим результат(пароль) в переменную clip$ для копирования в буфер обмена Next gl SetGadgetText(#Editor_0,sohr$) ;пишем общий результат(пароль) в EditorGadget EndIf EndIf ; если происходит событие нажатия кнопки #Button_1, то копируем пароль в буфер обмена If EventID = #PB_Event_Gadget If EventGadget() = #Button_1 SetClipboardText(clip$) EndIf EndIf Net: sohr$="" ; обнуляем переменную "sohr$" EventID = WaitWindowEvent(10) ;Стандартный вызов процедуры ожидания события в PureBasic Until EventID = #PB_Event_CloseWindow ; если закрыли окно выход из цикла End ; Конец всему делу венец