So, mir ist noch eingefallen, dass jemand
- einen leeren String eintragen will
- keinen Eintrag zum Löschen markiert hat
- einen Eintrag der bereits existiert eintragen will
Das wird jetzt alles abgefangen.
Spoiler anzeigen
C
#include <GUIConstants.au3>
#include <GuiList.au3>
#NoTrayIcon
Const $RegKey="HKEY_CURRENT_USER\Software\Microsoft\Shared Tools\Outlook\Journaling\"
$Form1 = GUICreate("Outlook Journal-Eintragstyp", 552, 304, -1, -1)
$Group1 = GUICtrlCreateGroup("Vorhandene Journaltypen", 20, 15, 341, 266)
$List1 = GUICtrlCreateList("", 35, 35, 311, 227, -1, $WS_EX_CLIENTEDGE)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button_add = GUICtrlCreateButton("Eintrag hinzufügen", 390, 125, 136, 36)
$Button_del = GUICtrlCreateButton("Markierten Eintrag löschen", 390, 185, 136, 36)
$Button_end = GUICtrlCreateButton("Ende", 390, 245, 136, 36)
GUISetState(@SW_SHOW)
$Form2 = GUICreate("Neuen Eintragstyp hinzufügen", 377, 151, -1, -1)
$Group2 = GUICtrlCreateGroup("Eintragstyp", 30, 15, 311, 66)
$Input1 = GUICtrlCreateInput("", 40, 40, 291, 26, -1, $WS_EX_CLIENTEDGE)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button_cancel = GUICtrlCreateButton("Abbrechen", 30, 95, 121, 26)
$Button_add_back = GUICtrlCreateButton("Hinzufügen", 220, 95, 121, 26)
$Form3 = GUICreate("ACHTUNG!", 531, 96, -1, -1)
GUICtrlCreateLabel("Achtung! Der Registry-Schlüssel für diesen Eintrag wird unwiederruflich gelöscht!", 20, 15, 492, 30, BitOR($SS_CENTER,$SS_CENTERIMAGE,$SS_SUNKEN))
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0xff0000)
GUICtrlSetState(-1, $GUI_DISABLE)
$Button_deltrue = GUICtrlCreateButton("Löschen", 20, 55, 85, 25)
$Button_delfalse = GUICtrlCreateButton("Nicht Löschen", 430, 55, 85, 25)
GUICtrlSetState(-1, $GUI_FOCUS)
_ReadSubKeyRefreshList()
While 1
$msg = GuiGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE Or $msg = $Button_end
ExitLoop
Case $msg = $Button_add
GUISetState(@SW_HIDE, $Form1)
GUISetState(@SW_SHOW, $Form2)
Case $msg = $Button_del
GUISetState(@SW_HIDE, $Form1)
GUISetState(@SW_SHOW, $Form3)
Case $msg = $Button_deltrue
If GUICtrlRead($List1) <> "" Then
RegDelete($RegKey&GUICtrlRead($List1))
Else
MsgBox(4096, "Achtung!", "Es wurde kein Eintrag ausgewählt.")
EndIf
GUISetState(@SW_HIDE, $Form3)
GUISetState(@SW_SHOW, $Form1)
_ReadSubKeyRefreshList()
Case $msg = $Button_delfalse
GUISetState(@SW_HIDE, $Form3)
GUISetState(@SW_SHOW, $Form1)
Case $msg = $Button_add_back
$NewEntry = GUICtrlRead($Input1)
If _GUICtrlListSelectString($List1, $NewEntry, -1) = $LB_ERR Then
If $NewEntry <> "" Then
_AddKeys4NewEntry($NewEntry)
GUISetState(@SW_SHOW, $Form1)
GUISetState(@SW_HIDE, $Form2)
_ReadSubKeyRefreshList()
Else
MsgBox(4096, "Achtung!", "Kein neuer Eintrag erstellt!")
EndIf
Else
MsgBox(4096, "Achtung!", "Eintrag existiert bereits!")
EndIf
Case $msg = $Button_cancel
GUISetState(@SW_SHOW, $Form1)
GUISetState(@SW_HIDE, $Form2)
EndSelect
WEnd
Exit
Func _ReadSubKeyRefreshList()
Dim $i=0
Dim $Wert, $Fehler=0
GUICtrlSetData($List1,"")
Do
$i+=1
$Wert=RegEnumKey($RegKey, $i)
$Fehler=@Error
If $Fehler=0 Then
GUICtrlSetData($List1, $Wert)
EndIf
Until $Fehler<>0
EndFunc
Func _AddKeys4NewEntry($NewEntry)
RegWrite($RegKey&$NewEntry, "AutoJournaled", "REG_DWORD" , 00000000)
RegWrite($RegKey&$NewEntry, "JournalByContact", "REG_DWORD" , 00000000)
RegWrite($RegKey&$NewEntry, "Large Icon", "REG_SZ" , "[8]")
RegWrite($RegKey&$NewEntry, "Small Icon", "REG_SZ" , "[8]")
RegWrite($RegKey&$NewEntry, "Description", "REG_SZ" , $NewEntry)
EndFunc
Alles anzeigen