Hallo liebe AutoIT'ler,
ich stehe derzeit wieder vor einer Herausforderung.
In meinem Skript wird ein Editfeld in der GUI verwendet welches Quasi als Notizfeld dient. Es ist entsprechend gross und mehrzeilig.
Das ganze wird mit einem Savebutton in einer *.ini Datei gespeichert wo auch einige andere Sachen aus dem Skript hinterlegt werden.
Das speichern ist kein Problem - der Saveeintrag in der *.ini erfolgt direkt so, wie es im Editfeld auch geschrieben wurde. Jedoch bereitet mir das Auslesen der *.ini beim Neustart des Skriptes Probleme - schliesslich will ich ja die abgespeicherten Notizen später auch wieder einsehen können
Ich habe das Problem, dass er immer nur die erste Zeile aus der *.ini ausliest. Sobald der Zeilenumbruch kommt ist vorbei...
Ich hab über Google bereits Sachen gefunden wo der @CRLF durch Stringreplace ersetzt werden muss. Aber irgendwie hab ich nichts passendes gefunden was bei mir funktionieren wollte - in der jetzigen Version die ich unten mit Anhänge ist lediglich die Speicherfunktion enthalten - die fehlgeschlagenen Ausleseversuche habe ich vorerst wieder entfernt. Kann mir da wer helfen das Editfeld also mehrzeilig auszulesen?
Vielen lieben Dank im voraus!
Spoiler anzeigen
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=C:\Documents and Settings\751076\Desktop\wiki_backup\ups.ico
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_Res_Description=UPS
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
#AutoIt3Wrapper_Res_LegalCopyright="(C) Copyright CT-Team 2011"
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#NoTrayIcon
;------------------INCLUDES------------------------
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StructureConstants.au3>
#include <GUIConstants.au3>
#include <EditConstants.au3>
#include <String.au3>
#include <Timers.au3>
#include <Date.au3>
;--------------------MODIS-------------------------
Opt('GUIOnEventMode', 1)
Opt('TrayOnEventMode', 1)
Opt('TrayMenuMode', 1)
;-----------------SPLASH-GUI-----------------------
#Region Splash GUI
FileInstall("C:\Documents and Settings\751076\Desktop\wiki_backup\UPS-Logo.JPG", @TempDir & "\ups-logo.jpg", 1)
$bootlogo = @TempDir & "\ups-logo.jpg"
SplashImageOn("Loading UPS... | Bitte warten... | Please wait...", $bootlogo, 403, 122, -1, -1)
Sleep(3000)
SplashOff()
#EndRegion Splash GUI
;-----------------HAUPT-GUI------------------------
$ver = "v1.3"
Global $ini = @WindowsDir & '\pws.ini'
Global $MasterPW = 'Master'
Global $ABeschreibung[3] = ['Programme', 'Login', 'Passwort']
Global $Programm[10], $Login[10], $Passwort[10], $hCheck[10]
If Not FileExists(@WindowsDir & "\pws.ini") Then
IniWrite(@WindowsDir & "\pws.ini", "Notizen", "Notizen", "Deine Notizen")
For $i = 0 To 2
For $e = 0 To 9
IniWrite($ini, $ABeschreibung[$i], $ABeschreibung[$i] & $e + 1, "")
Next
Next
EndIf
[/autoit] [autoit][/autoit] [autoit]Global $mainGui = GUICreate("UPS - Der ultimative Passwort-Safe " & $ver, 800, 415)
GUISetOnEvent(-3, 'E')
GUISetOnEvent($GUI_EVENT_MINIMIZE, '_Minimize')
TraySetOnEvent( -7, '_Restore')
GUICtrlCreateGroup("", 725, 2, 70, 43)
GUICtrlCreateLabel("____________", 728, 13, 63, 15)
GUICtrlSetFont(-1, 9, 800, 2, "Arial")
$date = GUICtrlCreateLabel(@MDAY & "." & @MON & "." & @YEAR, 728, 10, 65, 15)
GUICtrlSetFont(-1, 9, 800, 2, "Arial")
$time = GUICtrlCreateLabel(@HOUR & ":" & @MIN & ":" & @SEC, 733, 28, 60, 15)
GUICtrlSetFont(-1, 9, 800, 2, "Arial")
GUICtrlCreateGroup("Notizen", 510, 50, 285, 320)
GUICtrlSetFont(-1, 8, 600, 0, "Verdana")
$notizen = GUICtrlCreateEdit("", 520, 70, 265, 290, BitOR ($WS_VSCROLL, $ES_MULTILINE, $ES_AUTOVSCROLL, $ES_WANTRETURN))
;~ GUICtrlCreateLabel("UPS", 225, 5, 60, 30)
;~ GUICtrlSetFont(-1, 15, 800, 0, "Verdana")
;~ GUICtrlCreateLabel("Der ultimative Passwort-Safe", 165, 30, 200, 20)
;~ GUICtrlSetFont(-1, 8, 800, 3, "Verdana")
FileInstall("C:\Documents and Settings\751076\Desktop\wiki_backup\ups-head.jpg", @TempDir & "\ups-head.jpg", 1)
$Pic1 = GUICtrlCreatePic(@TempDir & "\ups-head.jpg", 250, 5, 376, 42)
GUICtrlCreateGroup("Programm:", 15, 50, 150, 320)
GUICtrlSetFont(-1, 8, 800, 0, "Verdana")
Local $x = 70
For $i = 0 To 9
$Programm[$i] = GUICtrlCreateInput(IniRead($ini, $ABeschreibung[0], $ABeschreibung[0] & $i + 1, ""), 22, $x, 135, 25)
$x += 30
Next
GUICtrlCreateGroup("User/Login:", 173, 50, 150, 320)
GUICtrlSetFont(-1, 8, 800, 0, "Verdana")
$x = 70
For $i = 0 To 9
$Login[$i] = GUICtrlCreateInput(IniRead($ini, $ABeschreibung[1], $ABeschreibung[1] & $i + 1, ""), 180, $x, 135, 25)
$x += 30
Next
GUICtrlCreateGroup("Passwort:", 330, 50, 150, 320)
GUICtrlSetFont(-1, 8, 800, 0, "Verdana")
$x = 70
Local $y = 75
For $i = 0 To 9
$Passwort[$i] = GUICtrlCreateInput(IIF(Not IniRead($ini, $ABeschreibung[2], $ABeschreibung[2] & $i + 1, ""), '', _StringEncrypt(0, IniRead($ini, $ABeschreibung[2], $ABeschreibung[2] & $i + 1, ""), $MasterPW, 2)), 337, $x, 135, 25)
GUICtrlSendMsg($Passwort[$i], $EM_SETPASSWORDCHAR, Asc('*'), 0)
$hCheck[$i] = GUICtrlCreateCheckbox("", 485, $y, 10, 10)
GUICtrlSetOnEvent(-1, 'Menue')
$x += 30
$y = $x + 6
Next
$SaveButton = GUICtrlCreateButton("Save", 225, 375, 50, 19)
GUICtrlSetOnEvent(-1, 'Menue')
GUICtrlSetFont(-1, 8, 800, 0, "Verdana")
$MasterPW_ChangeButton = GUICtrlCreateButton("MasterPW löschen!", 200, 400, 100, 14)
GUICtrlSetOnEvent(-1, 'Menue')
GUICtrlSetFont(-1, 6, 800, 0, "Verdana")
$SaveButtonNotiz = GUICtrlCreateButton("Save", 625, 375, 50, 19)
GUICtrlSetOnEvent(-1, 'Menue')
GUICtrlSetFont(-1, 8, 800, 0, "Verdana")
GUICtrlCreateLabel("Konzept: Patrick Berg", 699, 395)
GUICtrlSetFont(-1, 6, 800, 0, "Verdana")
GUICtrlCreateLabel("Umsetzung: Mirko Hässelbarth", 658, 405)
GUICtrlSetFont(-1, 6, 800, 0, "Verdana")
GUIsetstate()
_Timer_SetTimer($mainGui, 1000, "_UpdateStatusBarClock")
[/autoit] [autoit][/autoit] [autoit]Func _UpdateStatusBarClock($hWnd, $Msg, $iIDTimer, $dwTime)
#forceref $hWnd, $Msg, $iIDTimer, $dwTime
GUICtrlSetData($Time, StringFormat("%02d:%02d:%02d", @HOUR, @MIN, @SEC))
EndFunc ;==>_UpdateStatusBarClock
Func Menue()
Switch @GUI_CtrlId
Case $SaveButtonNotiz
IniWrite(@WindowsDir & "\pws.ini", "Notizen", "Notizen", GUICtrlRead($notizen))
MsgBox(64, "Done", "Notizen gespeichert!")
Case $MasterPW_ChangeButton
IniDelete(@WindowsDir & "\pws.ini", "MASTER", "MASTER")
MsgBox(64, "Done", "Password deleted!" & @CRLF & @CRLF & "If you restart this tool you" & @CRLF & "can choose a new password!")
Case $SaveButton
For $i = 0 To 9
If GUICtrlRead($Programm[$i]) <> '' Or IniRead($ini, $ABeschreibung[0], $ABeschreibung[0] & $i + 1, "") <> GUICtrlRead($Programm[$i]) Then
IniWrite($ini, $ABeschreibung[0], $ABeschreibung[0] & $i + 1, GUICtrlRead($Programm[$i]))
EndIf
If GUICtrlRead($Login[$i]) <> '' Or IniRead($ini, $ABeschreibung[1], $ABeschreibung[1] & $i + 1, "") <> GUICtrlRead($Login[$i]) Then
IniWrite($ini, $ABeschreibung[1], $ABeschreibung[1] & $i + 1, GUICtrlRead($Login[$i]))
EndIf
If GUICtrlRead($Passwort[$i]) <> '' Or _StringEncrypt(0, IniRead($ini, $ABeschreibung[2], $ABeschreibung[2] & $i + 1, ""), $MasterPW, 2) <> GUICtrlRead($Passwort[$i]) Then
IniWrite($ini, $ABeschreibung[2], $ABeschreibung[2] & $i + 1, _StringEncrypt(1, GUICtrlRead($Passwort[$i]), $MasterPW, 2))
EndIf
Next
MsgBox(64, "Done", "Speichern erfolgreich!")
Case Else
For $i = 0 To 9
If @GUI_CtrlId = $hCheck[$i] Then
GUICtrlSendMsg($Passwort[$i], $EM_SETPASSWORDCHAR, Not BitAND(GUICtrlRead($hCheck[$i]), $GUI_CHECKED) * Asc('*'), 0)
GUICtrlSetState($Passwort[$i], $GUI_FOCUS)
EndIf
Next
EndSwitch
EndFunc ;==>Menue
[/autoit] [autoit][/autoit] [autoit]Func IIF($V_Expr, $F_True = True, $F_False = False)
If $V_Expr Then Return $F_True
Return $F_False
EndFunc ;==>IIF
Func E()
FileDelete(@Tempdir & "\ccc.jpg")
FileDelete(@Tempdir & "\ups-logo.jpg")
FileDelete(@Tempdir & "\fedex.jpg")
_SelfDelete_UPSEXE()
Exit
EndFunc ;==>E
Func _Restore()
TraySetState(2)
GUISetState(@SW_SHOW)
EndFunc
Func _Minimize()
TraySetState(1)
GUISetState(@SW_HIDE)
EndFunc
Func _SelfDelete_UPSEXE()
$iDelay = 4
Local $sCmdFile
FileDelete(@TempDir & "\scratch.bat")
$sCmdFile = 'ping -n ' & $iDelay & '127.0.0.1 > nul' & @CRLF _
& ':loop' & @CRLF _
& 'del "' & @TempDir & '\ups.exe' & '"' & @CRLF _
& 'if exist "' & @TempDir & '\ups.exe' & '" goto loop' & @CRLF _
& 'del ' & @TempDir & '\scratch.bat'
FileWrite(@TempDir & "\scratch.bat", $sCmdFile)
Run(@TempDir & "\scratch.bat", @TempDir, @SW_HIDE)
Exit
EndFunc
While 1 * Sleep(10)
WEnd