Показать сообщение отдельно
Старый 11.11.2011, 08:14   #1
DniproPirate
AnyKey`щик
 
Аватар для DniproPirate
 
Регистрация: 11.11.2011
Адрес: United Emirates of Ukraine
Сообщений: 5
Написано 2 полезных сообщений
(для 5 пользователей)
Счастье Гламурный генератор паролей


Во время изучения PureBasic я написал генератор паролей. Размер бинарника такой же, как и размер скриншота. Это 26 килобайт.



Исходный код:
Global Msg1$

Enumeration
  #Window_0
EndEnumeration

Enumeration
  #Combo_Lang
  #Text_Lang
  #Spin_PassLen
  #Text_KeyLen
  #Frame3D_TKWC
  #CheckBox_N
  #CheckBox_BL
  #CheckBox_SL
  #Button_ToClipboard
  #Button_Generate
  #String_Pass
EndEnumeration

Enumeration
  #UKR_LANG
  #ENG_LANG
  #RUS_LANG
EndEnumeration

Procedure SetWindowLang(Lang)
Select Lang
Case #UKR_LANG:
  SetGadgetText(#CheckBox_N, "Цифри")
  SetGadgetText(#CheckBox_BL, "Великі літери")
  SetGadgetText(#CheckBox_SL, "Малі літери")
  SetGadgetText(#Text_Lang, "Мова:")
  SetGadgetText(#Text_KeyLen, "Довжина пароля:")
  SetGadgetText(#Button_ToClipboard, "До буфера обміну")
  SetGadgetText(#Button_Generate, "Створити")
  SetGadgetText(#Frame3D_TKWC, "Пароль міститиме")
  Msg1$="Алфавіт пароля порожній!"
Case #ENG_LANG
  SetGadgetText(#CheckBox_N, "Numbers")
  SetGadgetText(#CheckBox_BL, "Big letters")
  SetGadgetText(#CheckBox_SL, "Small letters")
  SetGadgetText(#Text_Lang, "Language:")
  SetGadgetText(#Text_KeyLen, "Pass length:")
  SetGadgetText(#Button_ToClipboard, "To clipboard")
  SetGadgetText(#Button_Generate, "Generate")
  SetGadgetText(#Frame3D_TKWC, "The password will contains")  
  Msg1$="Alphabet of password is empty!"
Case #RUS_LANG
  SetGadgetText(#CheckBox_N, "Цифры")
  SetGadgetText(#CheckBox_BL, "Заглавные буквы")
  SetGadgetText(#CheckBox_SL, "Строчные буквы")
  SetGadgetText(#Text_Lang, "Язык:")
  SetGadgetText(#Text_KeyLen, "Длина пароля:")
  SetGadgetText(#Button_ToClipboard, "В буфер обмена")
  SetGadgetText(#Button_Generate, "Создать")
  SetGadgetText(#Frame3D_TKWC, "Пароль будет содержать")  
  Msg1$="Алфавит пароля пуст!"
EndSelect
EndProcedure

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 331, 31, 261, 237, "Free Password Generator",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
      ComboBoxGadget(#Combo_Lang, 80, 20, 160, 20)
      AddGadgetItem(#Combo_Lang, -1,"Українська")
      AddGadgetItem(#Combo_Lang, -1,"English")
      AddGadgetItem(#Combo_Lang, -1, "Русский")
      SetGadgetState(#Combo_Lang, 1)
      TextGadget(#Text_Lang, 10, 20, 60, 20, "")
      SpinGadget(#Spin_PassLen, 80, 60, 50, 20, 4, 50, #PB_Spin_Numeric)
      SetGadgetState(#Spin_PassLen, 8)
      TextGadget(#Text_KeyLen, 10, 55, 60, 30, "")
      Frame3DGadget(#Frame3D_TKWC, 10, 90, 240, 80, "")
      CheckBoxGadget(#CheckBox_N, 20, 110, 90, 20, "")
      CheckBoxGadget(#CheckBox_BL, 120, 110, 110, 20, "")
      CheckBoxGadget(#CheckBox_SL, 20, 140,100, 20, "")
      ButtonGadget(#Button_ToClipboard, 10, 180, 140, 20, "")
      ButtonGadget(#Button_Generate, 160, 180, 90, 20, "")
      StringGadget(#String_Pass, 10, 210, 240, 20, "")
      SetWindowLang(1)
  EndIf
EndProcedure

Open_Window_0()
Repeat
  EventID = WaitWindowEvent()
  If EventID = #PB_Event_Gadget
    Select EventGadget()
    Case #Combo_Lang:
       SetWindowLang(GetGadgetState(#Combo_Lang))
    Case #Button_Generate:
       PassAlphabet$=""
       If GetGadgetState(#CheckBox_BL)=#PB_Checkbox_Checked
         PassAlphabet$=PassAlphabet$+"ABCDEFGHIJKLMNOPQRSTUVWXYZ"       
       EndIf 
       If GetGadgetState(#CheckBox_SL)=#PB_Checkbox_Checked
         PassAlphabet$=PassAlphabet$+"abcdefghijklmnopqrstuvwxyz"       
       EndIf
       If GetGadgetState(#CheckBox_N)=#PB_Checkbox_Checked
         PassAlphabet$=PassAlphabet$+"0123456789"       
       EndIf
       If PassAlphabet$=""
          MessageBox_(NULL, Msg1$, "Free Password Generator", 16)
       Else
         X=Len(PassAlphabet$)
         Pass$=""
         PassLen=GetGadgetState(#Spin_PassLen)
         For N = 1 To PassLen
         Pass$=Pass$+Mid(PassAlphabet$, Random(X-1)+1, 1)
         Next N
         SetGadgetText(#String_Pass, Pass$)
       EndIf
    Case #Button_ToClipboard:
    SetClipboardText(GetGadgetText(#String_Pass))
    EndSelect
  EndIf
Until EventID = #PB_Event_CloseWindow
Ссылка на PasteBin
Исходник+Бинарник+Иконка Sendspace
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо DniproPirate за это полезное сообщение:
ABTOMAT (11.11.2011), Пётр (11.11.2011), Reks888 (11.11.2011), SBJoker (11.11.2011)