Name, ID und PW in eine .ini speichern und in ListView zeigen(aktuallisiert)

  • Hey,

    mich regt es ständig auf, dass ich meine Passwörter und manchmal sogar meine ID vergesse.. z.B. das von AutoIt.de

    Ich versuche deshalb nen Tool zu schreiben das den Namen z.B. AutoIt.de, die ID und das Passwort in eine Ini speichert
    und falls mal ein neuer Account dazu kommt, der dort mit reingeschrieben wird. Damit ich nicht die ganze Zeit die ini öffnen muss um zu sehen welche Daten zu welchem Account gehören wollte ich in dem Programm noch ein Listview machen wo der Name, ID und PW angezeigt werden, außerdem ne lösch funktion falls etwas falsch geschrieben wurde(das ausgewählte item löschen).
    Inhalt der .ini
    [Save]
    AutoIt=ID;PW
    Youtube=ID;PW

    Inhalt der Listview
    AutoIt | ID;PW
    Youtube | ID;PW

    Ich hab schon nen bisschen rumprobiert ein paar Codes im Internet gefunden. Das Tool macht unendlich viele ListViewItems..

    Script:

    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>

    [/autoit][autoit][/autoit][autoit]

    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Save", 414, 205, 467, 313)
    $Input1 = GUICtrlCreateInput("", 16, 28, 153, 21)
    $Input2 = GUICtrlCreateInput("", 16, 68, 153, 21)
    $Input3 = GUICtrlCreateInput("", 16, 108, 153, 21)
    $Button1 = GUICtrlCreateButton("Save", 56, 136, 49, 25)
    $Button2 = GUICtrlCreateButton("Delete", 112, 136, 49, 25)
    GUICtrlCreateLabel("Wo? ID und Passwort:", 200, 8, 111, 15)
    GUICtrlCreateLabel("Wo?*", 16, 12, 27, 15)
    GUICtrlCreateLabel("ID:*", 19, 52, 18, 15)
    GUICtrlCreateLabel("Passwort:*", 18, 92, 50, 15)
    $ListView1 = GUICtrlCreateListView("Wo?|ID;PW", 200, 24, 201, 169, BitOR($GUI_SS_DEFAULT_LISTVIEW, $WS_HSCROLL, $WS_VSCROLL))
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    If GUICtrlRead($Input1) = "" Or GUICtrlRead($Input2) = "" Or GUICtrlRead($Input3) = "" Then
    MsgBox(64, "Meldung 01", "Füllen Sie bitte alle *Pflichtfelder aus.")
    Else
    IniWrite(@ScriptDir & "\Save.ini", "Save", GUICtrlRead($Input1), GUICtrlRead($Input2) & ";" & GUICtrlRead($Input3))
    EndIf
    Case $Button2
    ;Delete ausgewähltes Listitem aus .ini
    EndSwitch
    ;Aktuallierung
    If FileExists(@ScriptDir & "\Save.ini") Then
    If GUICtrlRead($ListView1) <> IniReadSection(@ScriptDir & "\Save.ini", "Save") Then
    $List = IniReadSection(@ScriptDir & "\Save.ini", "Save")
    For $i = 1 To UBound($List) - 1
    GUICtrlCreateListViewItem($List[$i][0] & "|" & $List[$i][1], $ListView1)
    Next
    EndIf
    EndIf
    WEnd

    [/autoit]

    $Vielleicht weiß einer ja auch ne bessere Lösung..

    AutoIt.de :love:

    Einmal editiert, zuletzt von Kilroy (27. September 2013 um 19:18)

  • Ich versteh nicht ganz, was du da miteinander vergleichen willst.
    Lagere den Teil des Codes, der deine Listview füllt in eine Funktion aus und ruf diese Funktion jedes Mal auf, nachdem über das GUI ein neuer Eintrag angelegt wurde. Dann ist die ListView immer aktuell.

    Ausserdem würde ich dazu übergehen, den Seitennamen als Sektionsnamen in der ini zu verwenden. IniReadSectionNames() .... IniReadSection() ....

    Code
    [Autoit]
    id=benutzername
    pass=streng_geheim
  • danke i2c, das mit der Lagerung einer Funktion hat mich auf eine total banale Idee gebracht, dazu fiel mir auch noch ein das ich vor einigen Wochen mit StringSplit gearbeitet hab und mit ein bisschen ausprobieren hab ichs dann hinbekommen.

    Ergebnis:

    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>

    [/autoit][autoit][/autoit][autoit]

    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Saver", 561, 328, -1, -1)
    $Input1 = GUICtrlCreateInput("", 16, 28, 153, 21)
    $Input2 = GUICtrlCreateInput("", 16, 68, 153, 21)
    $Input3 = GUICtrlCreateInput("", 16, 108, 153, 21)
    $Button1 = GUICtrlCreateButton("Save", 56, 136, 49, 25)
    $Button2 = GUICtrlCreateButton("Delete", 112, 136, 49, 25)
    GUICtrlCreateLabel("Wo? ID und Passwort:", 200, 8, 111, 15)
    GUICtrlCreateLabel("Wo?*", 16, 12, 27, 15)
    GUICtrlCreateLabel("ID:*", 19, 52, 18, 15)
    GUICtrlCreateLabel("Passwort:*", 18, 92, 50, 15)
    $ListView1 = GUICtrlCreateListView("Wo?|ID|PW", 200, 24, 353, 297, BitOR($GUI_SS_DEFAULT_LISTVIEW, $WS_HSCROLL, $WS_VSCROLL))
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 100)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 100)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 125)
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

    [/autoit][autoit][/autoit][autoit]

    If FileExists(@ScriptDir & "\Save.ini") Then
    _List()
    EndIf

    [/autoit][autoit][/autoit][autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    If GUICtrlRead($Input1) = "" Or GUICtrlRead($Input2) = "" Or GUICtrlRead($Input3) = "" Then
    MsgBox(64, "Meldung!", "Füllen Sie bitte alle *Pflichtfelder aus.")
    Else
    IniWrite(@ScriptDir & "\Save.ini", "Save", GUICtrlRead($Input1), GUICtrlRead($Input2) & "| " & GUICtrlRead($Input3))
    _List()
    EndIf
    Case $Button2
    _Delete()
    EndSwitch
    WEnd

    [/autoit][autoit][/autoit][autoit]

    Func _List()
    _GUICtrlListView_DeleteAllItems($ListView1)
    $List = IniReadSection(@ScriptDir & "\Save.ini", "Save")
    For $i = 1 To UBound($List) - 1
    GUICtrlCreateListViewItem($List[$i][0] & "|" & $List[$i][1], $ListView1)
    Next
    EndFunc ;==>_List

    [/autoit][autoit][/autoit][autoit]

    Func _Delete()
    If GUICtrlRead(GUICtrlRead($ListView1)) = "" Then
    MsgBox(16, "Meldung!", "Keine Zelle ausgewählt.")
    Else
    $Lst = GUICtrlRead(GUICtrlRead($ListView1))
    $Lst_Result = StringSplit($Lst, "|")
    Global $Section = $Lst_Result[1]
    IniDelete(@ScriptDir & "\Save.ini", "Save", $Section)
    _List()
    EndIf
    EndFunc ;==>_Delete

    [/autoit]

    Präfix [gelöst]

    AutoIt.de :love:

    Einmal editiert, zuletzt von Kilroy (27. September 2013 um 19:17)

  • Hab auch mal was ähnliches gemacht, allerdings etwas umfangreicher und mit Verschlüsselung ;)

    Mit _StringEncrypt kann man sehr leicht die Daten in der ini Datei verschlüsseln.
    Du kannst das ja wenn du lust hast noch ergänzen, sonst kann nämlich jeder der die ini findet alle deine Passwörter lesen.

    DFPWare