Kontexmenü_creator

  • Kontexmenü_creator:
    Es ist ein Toll welches einstellungen in der Registry vornimmt.
    Und zwar die Rechtsklick menü werte.

    Man kann:
    Im "Background" menü also rechtsklick auf einer freien stelle ein beliebiges Programm einstellen.

    im "Drive" menü kann man rechtsklick auf einem Laufwerk machen und eben falls ein Programm starten lassen,
    und Parameter verwenden. Z.B. für ein Backup-Programm.

    im "Folder" menü kann man rechtsklick auf einem Ordnern machen und eben falls ein Programm starten lassen,
    und Parameter verwenden. Z.B. für ein Programm wie "name_change" mit Parametern.


    >>>Neuerung.
    Alles an Programmen wird in einer Ini gespeichert um so ggf. auch Portable zu nutzen

    PS: Macht was ihr wollt damit :D
    Wenn es euch gefällt schreibt :p
    Hauptteil

    Spoiler anzeigen
    [autoit]


    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=K:\cnc3nod.ico
    #AutoIt3Wrapper_Outfile=Kontexmenu_creator.exe
    #AutoIt3Wrapper_UseX64=n
    #AutoIt3Wrapper_Res_Fileversion=1.0.0.0
    #AutoIt3Wrapper_Res_LegalCopyright=BuFF
    #AutoIt3Wrapper_Res_Language=1031
    #AutoIt3Wrapper_Run_Tidy=y
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <StaticConstants.au3>
    #include <TabConstants.au3>
    #include <WindowsConstants.au3>
    #include <RegFunc.au3>
    #include <array.au3>
    #include <file.au3>
    #include <GuiListView.au3>
    If IsArray($CmdLine) Then
    If $CmdLine[0] > 0 Then
    If $CmdLine[1] <> "" Then
    If $CmdLine[0] = 1 Then
    ShellExecute($CmdLine[1])
    Exit
    Else
    ShellExecute($CmdLine[1], $CmdLine[2])
    Exit
    EndIf
    Else
    ConsoleWrite("Fehler Keine Datei angegeben")
    Exit
    EndIf
    EndIf
    EndIf
    Global $g_szVersion = "Regchanger1_" & FileGetVersion(@ScriptName)
    If WinExists($g_szVersion) Then Exit
    AutoItWinSetTitle($g_szVersion)
    If FileExists(@WindowsDir & "\open.exe") Then
    Local $nurso = True
    Else
    FileCopy(@ScriptDir & "\open.exe", @WindowsDir & "\open.exe")
    EndIf
    Opt("GUIOnEventMode", 1)
    Opt("TrayOnEventMode", 1)
    Opt("TrayMenuMode", 1)
    #Region ### START Koda GUI section ### Form=C:\Users\Ron\Documents\AutoIT3\Kontexmenu_creator\Kontexmenu.kxf
    $Kontexmenu = GUICreate("Kontexmenü - Ersteller", 616, 354, 174, 222)
    GUISetOnEvent($GUI_EVENT_CLOSE, "KontexmenuClose")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "KontexmenuMinimize")
    GUISetOnEvent($GUI_EVENT_MAXIMIZE, "KontexmenuMaximize")
    GUISetOnEvent($GUI_EVENT_RESTORE, "KontexmenuRestore")
    $tab = GUICtrlCreateTab(8, 8, 593, 329)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    $allgemein = GUICtrlCreateTabItem("Normales Rechtsklickmenü")
    $Input_pfad = GUICtrlCreateInput("", 32, 64, 473, 21)
    GUICtrlSetOnEvent(-1, "Input_pfadChange")
    $Input_name = GUICtrlCreateInput("", 31, 184, 121, 21)
    GUICtrlSetOnEvent(-1, "Input_nameChange")
    GUICtrlCreateLabel("Pfad zum Programm:", 32, 40, 101, 17)
    GUICtrlSetOnEvent(-1, "Label4Click")
    GUICtrlCreateLabel("Name des Eintrags:", 32, 160, 96, 17)
    GUICtrlSetOnEvent(-1, "Label5Click")
    $Button_pfad = GUICtrlCreateButton("Suchen", 520, 64, 51, 21, $WS_GROUP)
    GUICtrlSetOnEvent(-1, "Button_pfadClick")
    $Button_hinzufugen = GUICtrlCreateButton("Hinzufügen", 168, 184, 75, 21, $WS_GROUP)
    GUICtrlSetOnEvent(-1, "Button_hinzufugenClick")
    $List1 = GUICtrlCreateList("", 27, 224, 361, 97)
    GUICtrlSetOnEvent(-1, "List1Click")
    $Button_suchen = GUICtrlCreateButton("Suchen", 419, 224, 115, 25, $WS_GROUP)
    GUICtrlSetOnEvent(-1, "Button_suchenClick")
    $Button_entfernen = GUICtrlCreateButton("Löschen", 419, 264, 115, 25, $WS_GROUP)
    GUICtrlSetOnEvent(-1, "Button_entfernenClick")
    $Checkbox_nachfragen = GUICtrlCreateCheckbox("Ohne Nachfragen Löschen?", 411, 296, 161, 17)
    GUICtrlSetOnEvent(-1, "Checkbox_nachfragenClick")
    $drive = GUICtrlCreateTabItem("Drive Rechtsklickmenü")
    $input_drive_pfad = GUICtrlCreateInput("", 31, 72, 473, 21)
    GUICtrlSetOnEvent(-1, "input_drive_pfadChange")
    $Input_drive_name = GUICtrlCreateInput("", 31, 192, 121, 21)
    GUICtrlSetOnEvent(-1, "Input_drive_nameChange")
    GUICtrlCreateLabel("Pfad zum Programm:", 31, 48, 101, 17)
    GUICtrlSetOnEvent(-1, "Label15Click")
    GUICtrlCreateLabel("Name des Eintrags:", 31, 168, 96, 17)
    GUICtrlSetOnEvent(-1, "Label16Click")
    $button_drive_program = GUICtrlCreateButton("Suchen", 519, 72, 51, 21, $WS_GROUP)
    GUICtrlSetOnEvent(-1, "button_drive_programClick")
    $Button_drive_hinzufugen = GUICtrlCreateButton("Hinzufügen", 159, 192, 75, 21, $WS_GROUP)
    GUICtrlSetOnEvent(-1, "Button_drive_hinzufugenClick")
    $List2 = GUICtrlCreateList("", 27, 224, 361, 97)
    GUICtrlSetOnEvent(-1, "List2Click")
    $Button_drive_suchen = GUICtrlCreateButton("Suchen", 426, 232, 115, 25, $WS_GROUP)
    GUICtrlSetOnEvent(-1, "Button_drive_suchenClick")
    $Button_drive_loschen = GUICtrlCreateButton("Löschen", 426, 264, 115, 25, $WS_GROUP)
    GUICtrlSetOnEvent(-1, "Button_drive_loschenClick")
    $Checkbox_drive_nachfragen = GUICtrlCreateCheckbox("Ohne Nachfragen Löschen?", 426, 304, 161, 17)
    GUICtrlSetOnEvent(-1, "Checkbox_drive_nachfragenClick")
    GUICtrlCreateLabel("Parameter Übergabe:", 32, 104, 105, 17)
    GUICtrlSetOnEvent(-1, "Label23Click")
    $Input_drvie_parameter = GUICtrlCreateInput("%1", 32, 128, 121, 21)
    GUICtrlSetOnEvent(-1, "Input_drvie_parameterChange")
    GUICtrlCreateLabel("Windows übergabeparameter für datein und verzeichnise lautet: %1", 176, 128, 322, 17)
    GUICtrlSetOnEvent(-1, "Label25Click")
    $ordner = GUICtrlCreateTabItem("Ordner Rechtsklickmenü")
    $Input_ordner_pfad = GUICtrlCreateInput("", 40, 66, 473, 21)
    GUICtrlSetOnEvent(-1, "Input_ordner_pfadChange")
    $Input_ordner_name = GUICtrlCreateInput("", 32, 194, 121, 21)
    GUICtrlSetOnEvent(-1, "Input_ordner_nameChange")
    GUICtrlCreateLabel("Pfad zum Programm:", 40, 42, 101, 17)
    GUICtrlSetOnEvent(-1, "Label29Click")
    GUICtrlCreateLabel("Name des Eintrags:", 32, 170, 96, 17)
    GUICtrlSetOnEvent(-1, "Label30Click")
    $Button_ordner_programm = GUICtrlCreateButton("Suchen", 528, 66, 51, 21, $WS_GROUP)
    GUICtrlSetOnEvent(-1, "Button_ordner_programmClick")
    $Button_ordner_hinzufugen = GUICtrlCreateButton("Hinzufügen", 168, 194, 75, 21, $WS_GROUP)
    GUICtrlSetOnEvent(-1, "Button_ordner_hinzufugenClick")
    $List3 = GUICtrlCreateList("", 27, 226, 361, 97)
    GUICtrlSetOnEvent(-1, "List3Click")
    $Button_ordner_suchen = GUICtrlCreateButton("Suchen", 419, 234, 115, 25, $WS_GROUP)
    GUICtrlSetOnEvent(-1, "Button_ordner_suchenClick")
    $Button_ordner_loschen = GUICtrlCreateButton("Löschen", 419, 266, 115, 25, $WS_GROUP)
    GUICtrlSetOnEvent(-1, "Button_ordner_loschenClick")
    $Checkbox_ordner_nachfragen = GUICtrlCreateCheckbox("Ohne Nachfragen Löschen?", 419, 306, 161, 17)
    GUICtrlSetOnEvent(-1, "Checkbox_ordner_nachfragenClick")
    GUICtrlCreateLabel("Parameter Übergabe:", 36, 104, 105, 17)
    GUICtrlSetOnEvent(-1, "Label37Click")
    $Input_ordner_parameter = GUICtrlCreateInput("%1", 36, 128, 121, 21)
    GUICtrlSetOnEvent(-1, "Input_ordner_parameterChange")
    GUICtrlCreateLabel("Windows übergabeparameter für datein und verzeichnise lautet: %1", 176, 128, 322, 17)
    GUICtrlSetOnEvent(-1, "Label39Click")
    $aus_ini_laden = GUICtrlCreateTabItem("Aus ini laden")
    $Input_iniload = GUICtrlCreateInput("", 32, 56, 329, 21)
    GUICtrlSetOnEvent(-1, "Input_iniloadChange")
    $Button_iniload = GUICtrlCreateButton("Ini Laden", 376, 56, 75, 21, $WS_GROUP)
    GUICtrlSetOnEvent(-1, "Button_iniloadClick")
    $Button_ini_start_load = GUICtrlCreateButton("Setze Werte Aus ini", 64, 120, 123, 25, $WS_GROUP)
    GUICtrlSetOnEvent(-1, "Button_ini_start_loadClick")
    $Button_ini_del_load = GUICtrlCreateButton("Werte wieder Löschen", 368, 120, 123, 25, $WS_GROUP)
    GUICtrlSetOnEvent(-1, "Button_ini_del_loadClick")
    GUICtrlCreateTabItem("")
    GUICtrlSetOnEvent(-1, "tabChange")
    TraySetClick("9")
    $exitmenutray = TrayCreateItem("Beenden")
    TrayItemSetOnEvent(-1, "exitmenutrayClick")
    $offnenmenutray = TrayCreateItem("Öffnen")
    TrayItemSetOnEvent(-1, "offnenmenutrayClick")
    $hidemenutray = TrayCreateItem("Verstecken")
    TrayItemSetOnEvent(-1, "hidemenutrayClick")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    Global $dateiname, $all_exe = False, $ordner_exe = False, $drive_exe = False
    Button_drive_suchenClick()
    Button_ordner_suchenClick()
    Button_suchenClick()
    GUICtrlSetData($Input_iniload, IniRead(@ScriptDir & "\Kontexmenu.ini", "Pfad_load_ini", "var", @ScriptDir & "\settings.ini"))
    While 1
    Sleep(100)
    WEnd
    #Region löschen der reg einträge
    Func Button_entfernenClick()
    If GUICtrlRead($Checkbox_nachfragen) = 4 Then
    $antwort = MsgBox(4, "System", "Wollen sie wirklich " & _GUICtrlListBox_GetText($List1, _GUICtrlListBox_GetCurSel($List1)) & " Löschen?")
    If $antwort = 6 Then
    $data = _GUICtrlListBox_GetText($List1, _GUICtrlListBox_GetCurSel($List1))
    RegDelete("HKEY_CLASSES_ROOT\Directory\Background\shell\" & $data)
    _GUICtrlListBox_DeleteString($List1, _GUICtrlListBox_FindString($List1, $data, True))
    EndIf
    Else
    $data = _GUICtrlListBox_GetText($List1, _GUICtrlListBox_GetCurSel($List1))
    RegDelete("HKEY_CLASSES_ROOT\Directory\Background\shell\" & $data)
    _GUICtrlListBox_DeleteString($List1, _GUICtrlListBox_FindString($List1, $data, True))
    EndIf
    Button_drive_suchenClick()
    Button_ordner_suchenClick()
    Button_suchenClick()
    EndFunc ;==>Button_entfernenClick
    Func Button_drive_loschenClick()
    If GUICtrlRead($Checkbox_drive_nachfragen) = 4 Then
    $antwort = MsgBox(4, "System", "Wollen sie wirklich " & _GUICtrlListBox_GetText($List2, _GUICtrlListBox_GetCurSel($List2)) & " Löschen?")
    If $antwort = 6 Then
    $data = _GUICtrlListBox_GetText($List2, _GUICtrlListBox_GetCurSel($List2))
    RegDelete("HKEY_CLASSES_ROOT\Drive\shell\" & $data)
    _GUICtrlListBox_DeleteString($List2, _GUICtrlListBox_FindString($List2, $data, True))
    EndIf
    Else
    $data = _GUICtrlListBox_GetText($List2, _GUICtrlListBox_GetCurSel($List2))
    RegDelete("HKEY_CLASSES_ROOT\Drive\shell\" & $data)
    _GUICtrlListBox_DeleteString($List2, _GUICtrlListBox_FindString($List2, $data, True))
    EndIf
    Button_drive_suchenClick()
    Button_ordner_suchenClick()
    Button_suchenClick()
    EndFunc ;==>Button_drive_loschenClick
    Func Button_ordner_loschenClick()
    If GUICtrlRead($Checkbox_ordner_nachfragen) = 4 Then
    $antwort = MsgBox(4, "System", "Wollen sie wirklich " & _GUICtrlListBox_GetText($List3, _GUICtrlListBox_GetCurSel($List3)) & " Löschen?")
    If $antwort = 6 Then
    $data = _GUICtrlListBox_GetText($List3, _GUICtrlListBox_GetCurSel($List3))
    RegDelete("HKEY_CLASSES_ROOT\Folder\shell\" & $data)
    _GUICtrlListBox_DeleteString($List3, _GUICtrlListBox_FindString($List3, $data, True))
    EndIf
    Else
    $data = _GUICtrlListBox_GetText($List3, _GUICtrlListBox_GetCurSel($List3))
    RegDelete("HKEY_CLASSES_ROOT\Folder\shell\" & $data)
    _GUICtrlListBox_DeleteString($List3, _GUICtrlListBox_FindString($List3, $data, True))
    EndIf
    Button_drive_suchenClick()
    Button_ordner_suchenClick()
    Button_suchenClick()
    EndFunc ;==>Button_ordner_loschenClick
    #EndRegion löschen der reg einträge
    #Region Hinzufügen der reg einträge
    Func Button_hinzufugenClick()
    If GUICtrlRead($Input_name) <> "" And GUICtrlRead($Input_pfad) And FileExists(GUICtrlRead($Input_pfad)) Then
    RegWrite("HKEY_CLASSES_ROOT\Directory\Background\shell\" & GUICtrlRead($Input_name), "Icon", "REG_SZ", '"' & GUICtrlRead($Input_pfad) & '"')
    RegWrite("HKEY_CLASSES_ROOT\Directory\Background\shell\" & GUICtrlRead($Input_name) & "\Command", "", "REG_SZ", '"' & GUICtrlRead($Input_pfad) & '"')
    If $all_exe = False Then RegWrite("HKEY_CLASSES_ROOT\Directory\Background\shell\" & GUICtrlRead($Input_name) & "\Command", "", "REG_SZ", "open.exe " & '"' & GUICtrlRead($Input_pfad) & '"')
    RegWrite("HKEY_CLASSES_ROOT\Directory\Background\shell\" & GUICtrlRead($Input_name), "", "REG_SZ", GUICtrlRead($Input_name))
    $all_exe = False
    Else
    MsgBox(0, "System", "Fehler nicht alle Felder sind ausgefüllt! Oder Programm existiert nicht!")
    EndIf
    Button_drive_suchenClick()
    Button_ordner_suchenClick()
    Button_suchenClick()
    EndFunc ;==>Button_hinzufugenClick
    Func Button_drive_hinzufugenClick()
    If GUICtrlRead($Input_drive_name) <> "" And GUICtrlRead($input_drive_pfad) And FileExists(GUICtrlRead($input_drive_pfad)) Then
    RegWrite("HKEY_CLASSES_ROOT\Drive\shell\" & GUICtrlRead($Input_drive_name), "Icon", "REG_SZ", '"' & GUICtrlRead($input_drive_pfad) & '"')
    RegWrite("HKEY_CLASSES_ROOT\Drive\shell\" & GUICtrlRead($Input_drive_name) & "\Command", "", "REG_SZ", '"' & GUICtrlRead($input_drive_pfad) & '" ' & GUICtrlRead($Input_drvie_parameter))
    If $drive_exe = False Then RegWrite("HKEY_CLASSES_ROOT\Drive\shell\" & GUICtrlRead($Input_drive_name) & "\Command", "", "REG_SZ", "open.exe " & '" ' & GUICtrlRead($input_drive_pfad) & '" ' & GUICtrlRead($Input_drvie_parameter))
    RegWrite("HKEY_CLASSES_ROOT\Drive\shell\" & GUICtrlRead($Input_drive_name), "", "REG_SZ", GUICtrlRead($Input_drive_name))
    $drive_exe = False
    Else
    MsgBox(0, "System", "Fehler nicht alle Felder sind ausgefüllt! Oder Programm existiert nicht!")
    EndIf
    Button_drive_suchenClick()
    Button_ordner_suchenClick()
    Button_suchenClick()
    EndFunc ;==>Button_drive_hinzufugenClick
    Func Button_ordner_hinzufugenClick()
    If GUICtrlRead($Input_ordner_name) <> "" And GUICtrlRead($Input_ordner_pfad) And FileExists(GUICtrlRead($Input_ordner_pfad)) Then
    RegWrite("HKEY_CLASSES_ROOT\Folder\shell\" & GUICtrlRead($Input_ordner_name), "Icon", "REG_SZ", '"' & GUICtrlRead($Input_ordner_pfad) & '"')
    RegWrite("HKEY_CLASSES_ROOT\Folder\shell\" & GUICtrlRead($Input_ordner_name) & "\Command", "", "REG_SZ", '"' & GUICtrlRead($Input_ordner_pfad) & '" ' & GUICtrlRead($Input_ordner_parameter))
    If $ordner_exe = False Then RegWrite("HKEY_CLASSES_ROOT\Folder\shell\" & GUICtrlRead($Input_ordner_name) & "\Command", "", "REG_SZ", "open.exe " & '"' & GUICtrlRead($Input_ordner_pfad) & '" ' & GUICtrlRead($Input_ordner_parameter))
    RegWrite("HKEY_CLASSES_ROOT\Folder\shell\" & GUICtrlRead($Input_ordner_name), "", "REG_SZ", GUICtrlRead($Input_ordner_name))
    $ordner_exe = False
    Else
    MsgBox(0, "System", "Fehler nicht alle Felder sind ausgefüllt! Oder Programm existiert nicht!")
    EndIf
    Button_drive_suchenClick()
    Button_ordner_suchenClick()
    Button_suchenClick()
    EndFunc ;==>Button_ordner_hinzufugenClick
    #EndRegion Hinzufügen der reg einträge
    #Region Suchen button
    Func Button_pfadClick()
    $fileload = FileOpenDialog("Programm Auswählen", "", "Alle Dateien (*.*)")
    If $fileload <> "" Then
    GUICtrlSetData($Input_pfad, $fileload)
    $filearray = StringSplit($fileload, "\")
    $number = UBound($filearray) - 1
    If $filearray[$number] <> "" Then GUICtrlSetData($Input_name, $filearray[$number])
    $dateiname = $filearray[$number]
    If StringInStr($filearray[$number], ".exe") >= 1 Then $all_exe = True
    EndIf
    EndFunc ;==>Button_pfadClick
    Func button_drive_programClick()
    $fileload = FileOpenDialog("Programm Auswählen", "", "Alle Dateien (*.*)")
    If $fileload <> "" Then
    GUICtrlSetData($input_drive_pfad, $fileload)
    $filearray = StringSplit($fileload, "\")
    $number = UBound($filearray) - 1
    If $filearray[$number] <> "" Then GUICtrlSetData($Input_drive_name, $filearray[$number])
    $dateiname = $filearray[$number]
    If StringInStr($filearray[$number], ".exe") >= 1 Then $drive_exe = True
    EndIf
    EndFunc ;==>button_drive_programClick
    Func Button_ordner_programmClick()
    $fileload = FileOpenDialog("Programm Auswählen", "", "Alle Dateien (*.*)")
    If $fileload <> "" Then
    GUICtrlSetData($Input_ordner_pfad, $fileload)
    $filearray = StringSplit($fileload, "\")
    $number = UBound($filearray) - 1
    If $filearray[$number] <> "" Then GUICtrlSetData($Input_ordner_name, $filearray[$number])
    $dateiname = $filearray[$number]
    If StringInStr($filearray[$number], ".exe") >= 1 Then $ordner_exe = True
    EndIf
    EndFunc ;==>Button_ordner_programmClick
    #EndRegion Suchen button
    #Region Suchen der einzelnen einträge (liste)
    Func Button_suchenClick()
    _GUICtrlListBox_ResetContent($List1)
    $ar = _GetRegSubKeys("HKEY_CLASSES_ROOT\Directory\Background\shell")
    ;_ArrayDisplay($ar)
    For $i = 0 To UBound($ar) - 1 Step +1
    If $ar[$i] <> "cmd" Then _GUICtrlListBox_InsertString($List1, $ar[$i])
    Next
    EndFunc ;==>Button_suchenClick
    Func Button_drive_suchenClick()
    _GUICtrlListBox_ResetContent($List2)
    $ar = _GetRegSubKeys("HKEY_CLASSES_ROOT\Drive\shell")
    ;_ArrayDisplay($ar)
    For $i = 0 To UBound($ar) - 1 Step +1
    If $ar[$i] <> "cmd" And $ar[$i] <> "encrypt-bde" And $ar[$i] <> "encrypt-bde-elev" And $ar[$i] <> "find" And $ar[$i] <> "manage-bde" And $ar[$i] <> "manage-bde-elev" And $ar[$i] <> "resume-bde" And $ar[$i] <> "resume-bde-elev" And $ar[$i] <> "unlock-bde" Then _GUICtrlListBox_InsertString($List2, $ar[$i])
    Next
    EndFunc ;==>Button_drive_suchenClick
    Func Button_ordner_suchenClick()
    _GUICtrlListBox_ResetContent($List3)
    $ar = _GetRegSubKeys("HKEY_CLASSES_ROOT\Folder\shell")
    ;_ArrayDisplay($ar)
    For $i = 0 To UBound($ar) - 1 Step +1
    If $ar[$i] <> "explore" And $ar[$i] <> "open" And $ar[$i] <> "opennewprocess" And $ar[$i] <> "opennewwindow" Then _GUICtrlListBox_InsertString($List3, $ar[$i])
    Next
    EndFunc ;==>Button_ordner_suchenClick
    #EndRegion Suchen der einzelnen einträge (liste)
    #Region Ini settings
    Func Button_iniloadClick()
    $fileload = FileOpenDialog("Einstellungs Ini", "", "Konfig-Dat (*.ini)")
    If $fileload <> "" Then GUICtrlSetData($Input_iniload, $fileload)
    EndFunc ;==>Button_iniloadClick
    Func Button_ini_start_loadClick()
    Local $lines
    Local $singelline
    $Pfad_for_ini = IniRead(@ScriptDir & "\Kontexmenu.ini", "Pfad_load_ini", "var", @ScriptDir & "\settings.ini")
    _FileReadToArray($Pfad_for_ini, $lines)
    For $i = 0 To $lines[0] Step +1
    $singelline = StringSplit($lines[$i], "<->", 1)
    If $singelline[0] == 5 Then
    If $singelline[1] == "Drive" Then
    RegWrite("HKEY_CLASSES_ROOT\Drive\shell\" & $singelline[2], "Icon", "REG_SZ", $singelline[4])
    RegWrite("HKEY_CLASSES_ROOT\Drive\shell\" & $singelline[2], "", "REG_SZ", $singelline[3])
    RegWrite("HKEY_CLASSES_ROOT\Drive\shell\" & $singelline[2] & "\Command", "", "REG_SZ", $singelline[5])
    EndIf
    If $singelline[1] == "Folder" Then
    RegWrite("HKEY_CLASSES_ROOT\Folder\shell\" & $singelline[2], "Icon", "REG_SZ", $singelline[4])
    RegWrite("HKEY_CLASSES_ROOT\Folder\shell\" & $singelline[2], "", "REG_SZ", $singelline[3])
    RegWrite("HKEY_CLASSES_ROOT\Folder\shell\" & $singelline[2] & "\Command", "", "REG_SZ", $singelline[5])
    EndIf
    If $singelline[1] == "Background" Then
    RegWrite("HKEY_CLASSES_ROOT\Directory\Background\shell\" & $singelline[2], "Icon", "REG_SZ", $singelline[4])
    RegWrite("HKEY_CLASSES_ROOT\Directory\Background\shell\" & $singelline[2], "", "REG_SZ", $singelline[3])
    RegWrite("HKEY_CLASSES_ROOT\Directory\Background\shell\" & $singelline[2] & "\Command", "", "REG_SZ", $singelline[5])
    EndIf
    EndIf
    Next
    Button_drive_suchenClick()
    Button_ordner_suchenClick()
    Button_suchenClick()
    EndFunc ;==>Button_ini_start_loadClick
    Func Button_ini_del_loadClick()
    Local $lines
    Local $singelline
    $Pfad_for_ini = IniRead(@ScriptDir & "\Kontexmenu.ini", "Pfad_load_ini", "var", @ScriptDir & "\settings.ini")
    _FileReadToArray($Pfad_for_ini, $lines)
    For $i = 0 To $lines[0] Step +1
    $singelline = StringSplit($lines[$i], "<->", 1)
    If $singelline[0] == 5 Then
    If $singelline[1] == "Drive" Then
    RegWrite("HKEY_CLASSES_ROOT\Drive\shell\" & $singelline[2])
    EndIf
    If $singelline[1] == "Folder" Then
    RegWrite("HKEY_CLASSES_ROOT\Folder\shell\" & $singelline[2])
    EndIf
    If $singelline[1] == "Background" Then
    RegWrite("HKEY_CLASSES_ROOT\Directory\Background\shell\" & $singelline[2])
    EndIf
    EndIf
    Next
    Button_drive_suchenClick()
    Button_ordner_suchenClick()
    Button_suchenClick()
    EndFunc ;==>Button_ini_del_loadClick
    #EndRegion Ini settings
    Func KontexmenuClose()
    $file = FileOpen(GUICtrlRead($Input_iniload), 2)
    Button_drive_suchenClick()
    Button_ordner_suchenClick()
    Button_suchenClick()
    $anzahl = _GUICtrlListBox_GetCount($List1)
    For $i = 0 To $anzahl - 1
    $text = _GUICtrlListBox_GetText($List1, $i)
    $Temp_name = RegRead("HKEY_CLASSES_ROOT\Directory\Background\shell\" & $text, "")
    $Temp_Icon = RegRead("HKEY_CLASSES_ROOT\Directory\Background\shell\" & $text, "Icon")
    $Temp_programm = RegRead("HKEY_CLASSES_ROOT\Directory\Background\shell\" & $text & "\command", "")
    If $text == "" Then $text = "..."
    If $Temp_name == "" Then $Temp_name = "..."
    If $Temp_Icon == "" Then $Temp_name = "..."
    If $Temp_programm == "" Then $Temp_name = "..."
    FileWriteLine($file, "Background<->" & $text & "<->" & $Temp_name & "<->" & $Temp_Icon & "<->" & $Temp_programm)
    Next
    $anzahl = _GUICtrlListBox_GetCount($List2)
    For $i = 0 To $anzahl - 1
    $text = _GUICtrlListBox_GetText($List2, $i)
    $Temp_name = RegRead("HKEY_CLASSES_ROOT\Drive\shell\" & $text, "")
    $Temp_Icon = RegRead("HKEY_CLASSES_ROOT\Drive\shell\" & $text, "Icon")
    $Temp_programm = RegRead("HKEY_CLASSES_ROOT\Drive\shell\" & $text & "\command", "")
    If $text == "" Then $text = "..."
    If $Temp_name == "" Then $Temp_name = "..."
    If $Temp_Icon == "" Then $Temp_name = "..."
    If $Temp_programm == "" Then $Temp_name = "..."
    FileWriteLine($file, "Drive<->" & $text & "<->" & $Temp_name & "<->" & $Temp_Icon & "<->" & $Temp_programm)
    Next
    $anzahl = _GUICtrlListBox_GetCount($List3)
    For $i = 0 To $anzahl - 1
    $text = _GUICtrlListBox_GetText($List3, $i)
    $Temp_name = RegRead("HKEY_CLASSES_ROOT\Folder\shell\" & $text, "")
    $Temp_Icon = RegRead("HKEY_CLASSES_ROOT\Folder\shell\" & $text, "Icon")
    $Temp_programm = RegRead("HKEY_CLASSES_ROOT\Folder\shell\" & $text & "\command", "")
    If $text == "" Then $text = "..."
    If $Temp_name == "" Then $Temp_name = "..."
    If $Temp_Icon == "" Then $Temp_name = "..."
    If $Temp_programm == "" Then $Temp_name = "..."
    FileWriteLine($file, "Folder<->" & $text & "<->" & $Temp_name & "<->" & $Temp_Icon & "<->" & $Temp_programm)
    Next
    IniWrite(@ScriptDir & "\Kontexmenu.ini", "Pfad_load_ini", "var", GUICtrlRead($Input_iniload))
    FileClose($file)
    GUISetState(@SW_HIDE)
    EndFunc ;==>KontexmenuClose
    Func exitmenutrayClick()
    $file = FileOpen(GUICtrlRead($Input_iniload), 2)
    Button_drive_suchenClick()
    Button_ordner_suchenClick()
    Button_suchenClick()
    $anzahl = _GUICtrlListBox_GetCount($List1)
    For $i = 0 To $anzahl - 1
    $text = _GUICtrlListBox_GetText($List1, $i)
    $Temp_name = RegRead("HKEY_CLASSES_ROOT\Directory\Background\shell\" & $text, "")
    $Temp_Icon = RegRead("HKEY_CLASSES_ROOT\Directory\Background\shell\" & $text, "Icon")
    $Temp_programm = RegRead("HKEY_CLASSES_ROOT\Directory\Background\shell\" & $text & "\command", "")
    If $text == "" Then $text = "..."
    If $Temp_name == "" Then $Temp_name = "..."
    If $Temp_Icon == "" Then $Temp_name = "..."
    If $Temp_programm == "" Then $Temp_name = "..."
    FileWriteLine($file, "Background<->" & $text & "<->" & $Temp_name & "<->" & $Temp_Icon & "<->" & $Temp_programm)
    Next
    $anzahl = _GUICtrlListBox_GetCount($List2)
    For $i = 0 To $anzahl - 1
    $text = _GUICtrlListBox_GetText($List2, $i)
    $Temp_name = RegRead("HKEY_CLASSES_ROOT\Drive\shell\" & $text, "")
    $Temp_Icon = RegRead("HKEY_CLASSES_ROOT\Drive\shell\" & $text, "Icon")
    $Temp_programm = RegRead("HKEY_CLASSES_ROOT\Drive\shell\" & $text & "\command", "")
    If $text == "" Then $text = "..."
    If $Temp_name == "" Then $Temp_name = "..."
    If $Temp_Icon == "" Then $Temp_name = "..."
    If $Temp_programm == "" Then $Temp_name = "..."
    FileWriteLine($file, "Drive<->" & $text & "<->" & $Temp_name & "<->" & $Temp_Icon & "<->" & $Temp_programm)
    Next
    $anzahl = _GUICtrlListBox_GetCount($List3)
    For $i = 0 To $anzahl - 1
    $text = _GUICtrlListBox_GetText($List3, $i)
    $Temp_name = RegRead("HKEY_CLASSES_ROOT\Folder\shell\" & $text, "")
    $Temp_Icon = RegRead("HKEY_CLASSES_ROOT\Folder\shell\" & $text, "Icon")
    $Temp_programm = RegRead("HKEY_CLASSES_ROOT\Folder\shell\" & $text & "\command", "")
    If $text == "" Then $text = "..."
    If $Temp_name == "" Then $Temp_name = "..."
    If $Temp_Icon == "" Then $Temp_name = "..."
    If $Temp_programm == "" Then $Temp_name = "..."
    FileWriteLine($file, "Folder<->" & $text & "<->" & $Temp_name & "<->" & $Temp_Icon & "<->" & $Temp_programm)
    Next
    IniWrite(@ScriptDir & "\Kontexmenu.ini", "Pfad_load_ini", "var", GUICtrlRead($Input_iniload))
    FileClose($file)
    Exit
    EndFunc ;==>exitmenutrayClick
    Func offnenmenutrayClick()
    GUISetState(@SW_SHOW)
    EndFunc ;==>offnenmenutrayClick
    Func hidemenutrayClick()
    GUISetState(@SW_HIDE)
    EndFunc ;==>hidemenutrayClick

    [/autoit]


    UDF von BugFix

    Spoiler anzeigen
    [autoit]

    ;========================================================================================
    ; Function Name: _GetRegSubKeys($HKEY)
    ; Description: Ermittelt die Unterschlüssel für den übergebenen Schlüssel
    ; Parameter(s): $HKEY der Registryschlüssel
    ; Return Value(s): Erfolg Array mit den Unterschlüsseln
    ; Fehler Leerstring (keine Unterschlüssel vorhanden oder Schlüssel existiert nicht)
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;========================================================================================
    Func _GetRegSubKeys($HKEY)
    If StringInStr($HKEY, '\') Then
    If StringRight($HKEY, 1) = '\' Then
    $HKEY = StringTrimRight($HKEY, 1)
    Local $strKeyPath = ''
    Else
    Local $strKeyPath = StringRight($HKEY, StringLen($HKEY)-StringInStr($HKEY, '\') )
    $HKEY = StringLeft($HKEY, StringInStr($HKEY, '\')-1)
    EndIf
    Else
    Local $strKeyPath = ''
    EndIf
    Select
    Case $HKEY = "HKEY_LOCAL_MACHINE" Or $HKEY = "HKLM"
    $HKEY = 0x80000002
    Case $HKEY = "HKEY_USERS" Or $HKEY = "HKU"
    $HKEY = 0x80000003
    Case $HKEY = "HKEY_CURRENT_USER" Or $HKEY = "HKCU"
    $HKEY = 0x80000001
    Case $HKEY = "HKEY_CLASSES_ROOT" Or $HKEY = "HKCR"
    $HKEY = 0x80000000
    Case $HKEY = "HKEY_CURRENT_CONFIG" Or $HKEY = "HKCC"
    $HKEY = 0x80000005
    EndSelect
    Local $arrSubKeys = '', $subkey
    Local $oReg = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
    $oReg.EnumKey ($HKEY, $strKeyPath, $arrSubKeys)
    Return $arrSubKeys
    EndFunc ;==>_GetRegSubKeys

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

    ;========================================================================================
    ; Function Name: _GetRegRights($HKEY)
    ; Description: Ermittelt die Rechte des Abfragenden für den übergebenen Schlüssel
    ; Parameter(s): $HKEY der zu prüfende Registryschlüssel
    ; Return Value(s): String mit Auflistung der Rechte:
    ; Q Key Query Value
    ; S Key Set Value
    ; C Key Create Sub Key
    ; D Delete
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;========================================================================================
    Func _GetRegRights($HKEY)
    Local $bHasAccessRight, $sRights = ''
    If StringInStr($HKEY, '\') Then
    If StringRight($HKEY, 1) = '\' Then
    $HKEY = StringTrimRight($HKEY, 1)
    Local $strKeyPath = ''
    Else
    Local $strKeyPath = StringRight($HKEY, StringLen($HKEY)-StringInStr($HKEY, '\') )
    $HKEY = StringLeft($HKEY, StringInStr($HKEY, '\')-1)
    EndIf
    Else
    Local $strKeyPath = ''
    EndIf
    Select
    Case $HKEY = "HKEY_LOCAL_MACHINE" Or $HKEY = "HKLM"
    $HKEY = 0x80000002
    Case $HKEY = "HKEY_USERS" Or $HKEY = "HKU"
    $HKEY = 0x80000003
    Case $HKEY = "HKEY_CURRENT_USER" Or $HKEY = "HKCU"
    $HKEY = 0x80000001
    Case $HKEY = "HKEY_CLASSES_ROOT" Or $HKEY = "HKCR"
    $HKEY = 0x80000000
    Case $HKEY = "HKEY_CURRENT_CONFIG" Or $HKEY = "HKCC"
    $HKEY = 0x80000005
    EndSelect
    Local $oReg = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
    $oReg.CheckAccess($HKEY, $strKeyPath, 0x0001, $bHasAccessRight)
    If $bHasAccessRight = True Then $sRights &= 'Q'
    $oReg.CheckAccess($HKEY, $strKeyPath, 0x0002, $bHasAccessRight)
    If $bHasAccessRight = True Then $sRights &= 'S'
    $oReg.CheckAccess($HKEY, $strKeyPath, 0x0004, $bHasAccessRight)
    If $bHasAccessRight = True Then $sRights &= 'C'
    $oReg.CheckAccess($HKEY, $strKeyPath, 0x00010000, $bHasAccessRight)
    If $bHasAccessRight = True Then $sRights &= 'D'
    Return $sRights
    EndFunc ;==>_GetRegRights

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

    ;========================================================================================
    ; Function Name: _GetRegValues($HKEY)
    ; Description: Ermittelt alle Namen, Typen und Werte in einem gegebenen Schlüssel
    ; Parameter(s): $HKEY der Registryschlüssel
    ; Return Value(s): Erfolg Array[i][0] = Name
    ; Array[i][1] = Typ
    ; Array[i][2] = Wert
    ; Fehler Leerstring (Schlüssel existiert nicht oder ist ohne Einträge)
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;========================================================================================
    Func _GetRegValues($HKEY)
    Local $oMyError = ObjEvent("AutoIt.Error","MyErrFunc")
    If StringInStr($HKEY, '\') Then
    If StringRight($HKEY, 1) = '\' Then
    $HKEY = StringTrimRight($HKEY, 1)
    Local $strKeyPath = ''
    Else
    Local $strKeyPath = StringRight($HKEY, StringLen($HKEY)-StringInStr($HKEY, '\') )
    $HKEY = StringLeft($HKEY, StringInStr($HKEY, '\')-1)
    EndIf
    Else
    Local $strKeyPath = ''
    EndIf
    Select
    Case $HKEY = "HKEY_LOCAL_MACHINE" Or $HKEY = "HKLM"
    $HKEY = 0x80000002
    Case $HKEY = "HKEY_USERS" Or $HKEY = "HKU"
    $HKEY = 0x80000003
    Case $HKEY = "HKEY_CURRENT_USER" Or $HKEY = "HKCU"
    $HKEY = 0x80000001
    Case $HKEY = "HKEY_CLASSES_ROOT" Or $HKEY = "HKCR"
    $HKEY = 0x80000000
    Case $HKEY = "HKEY_CURRENT_CONFIG" Or $HKEY = "HKCC"
    $HKEY = 0x80000005
    EndSelect
    Local $oReg = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
    Local $arrValueNames, $arrValueTypes, $strValue
    $oReg.EnumValues($HKEY, $strKeyPath, $arrValueNames, $arrValueTypes)
    $OEvent = ObjEvent($oReg, "EnumValues")
    If Not IsArray($arrValueNames) Then Return ''
    Local $arOut[UBound($arrValueNames)][3]
    For $i = 0 To UBound($arrValueNames) -1
    $arOut[$i][0] = $arrValueNames[$i]
    Switch $arrValueTypes[$i]
    Case 1
    $arOut[$i][1] = 'REG_SZ'
    $oReg.GetStringValue($HKEY, $strKeyPath, $arrValueNames[$i], $strValue)
    Case 2
    $arOut[$i][1] = 'REG_EXPAND_SZ'
    $oReg.GetExpandedStringValue($HKEY, $strKeyPath, $arrValueNames[$i], $strValue)
    Case 3
    $arOut[$i][1] = 'REG_BINARY'
    $oReg.GetBinaryValue($HKEY, $strKeyPath, $arrValueNames[$i], $strValue)
    Case 4
    $arOut[$i][1] = 'REG_DWORD'
    $oReg.GetStringValue($HKEY, $strKeyPath, $arrValueNames[$i], $strValue)
    Case 7
    $arOut[$i][1] = 'REG_MULTI_SZ'
    $oReg.GetMultiStringValue($HKEY, $strKeyPath, $arrValueNames[$i], $strValue)
    EndSwitch
    $arOut[$i][2] = $strValue
    Next
    Return $arOut
    EndFunc ;==>_GetRegValues
    Func MyErrFunc()
    Return
    Endfunc

    [/autoit]