#include <GUIConstants.au3>
#Include <GuiList.au3>
#include <Array.au3>
Opt("GUIOnEventMode", 1)

Dim $arSearch[1] = ['']
Dim $arCPL[58][3] ; FENSTER| CPL-FILE| PARAMETER-INDEX
$arCPL[0][0] = "Systemeigenschaften - Allgemein"
$arCPL[1][0] = "Systemeigenschaften - Computername"
$arCPL[2][0] = "Systemeigenschaften - Hardware"
$arCPL[3][0] = "Systemeigenschaften - Erweitert"
$arCPL[4][0] = "Systemeigenschaften - Erweitert <Button Systemleistung-Einstellungen> Leistungsoptionen"
$arCPL[5][0] = "Systemeigenschaften - Systemwiederherstellung"
$arCPL[6][0] = "Systemeigenschaften - Automatische Updates"
$arCPL[7][0] = "Systemeigenschaften - Remote"
$arCPL[8][0] = "Eigenschaften von Anzeige - Designs"
$arCPL[9][0] = "Eigenschaften von Anzeige - Desktop"
$arCPL[10][0] = "Eigenschaften von Anzeige - Bildschirmschoner"
$arCPL[11][0] = "Eigenschaften von Anzeige - Darstellung"
$arCPL[12][0] = "Eigenschaften von Anzeige - Einstellungen"
$arCPL[13][0] = "Software - Programme ändern oder entfernen"
$arCPL[14][0] = "Software - Neue Programme hinzufügen"
$arCPL[15][0] = "Software - Windowskomponenten hinzufügen oder entfernen"
$arCPL[16][0] = "Software - Programmzugriff und -standards festlegen"
$arCPL[17][0] = "Eingabehilfen - Tastatur"
$arCPL[18][0] = "Eingabehilfen - Sound"
$arCPL[19][0] = "Eingabehilfen - Anzeige"
$arCPL[20][0] = "Eingabehilfen - Maus"
$arCPL[21][0] = "Eingabehilfen - Allgemein"
$arCPL[22][0] = "Eigenschaften von Internet - Allgemein"
$arCPL[23][0] = "Eigenschaften von Internet - Sicherheit"
$arCPL[24][0] = "Eigenschaften von Internet - Datenschutz"
$arCPL[25][0] = "Eigenschaften von Internet - Inhalte"
$arCPL[26][0] = "Eigenschaften von Internet - Verbindungen"
$arCPL[27][0] = "Eigenschaften von Internet - Programme"
$arCPL[28][0] = "Eigenschaften von Internet - Erweitert"
$arCPL[29][0] = "Regions- und Sprachoptionen - Regionale Einstellungen"
$arCPL[30][0] = "Regions- und Sprachoptionen - Sprache"
$arCPL[31][0] = "Regions- und Sprachoptionen - Erweitert"
$arCPL[32][0] = "Eigenschaften von Maus - Tasten"
$arCPL[33][0] = "Eigenschaften von Maus - Zeiger"
$arCPL[34][0] = "Eigenschaften von Maus - Zeigeroptionen"
$arCPL[35][0] = "Eigenschaften von Maus - Rad"
$arCPL[36][0] = "Eigenschaften von Maus - Hardware"
$arCPL[37][0] = "Eigenschaften von Maus - Geräteeinstellungen"
$arCPL[38][0] = "Eigenschaften von Sounds und Audiogeräte - Lautstärke"
$arCPL[39][0] = "Eigenschaften von Sounds und Audiogeräte - Sounds"
$arCPL[40][0] = "Eigenschaften von Sounds und Audiogeräte - Audio"
$arCPL[41][0] = "Eigenschaften von Sounds und Audiogeräte - Stimme"
$arCPL[42][0] = "Eigenschaften von Sounds und Audiogeräte - Hardware"
$arCPL[43][0] = "Telefon- und Modemoptionen - Wählregeln"
$arCPL[44][0] = "Telefon- und Modemoptionen - Modems"
$arCPL[45][0] = "Telefon- und Modemoptionen - Erweitert"
$arCPL[46][0] = "Eigenschaften von Datum und Uhrzeit - Datum und Uhrzeit"
$arCPL[47][0] = "Eigenschaften von Datum und Uhrzeit - Zeitzone"
$arCPL[48][0] = "Windows-Sicherheitscenter - Hauptfenster"
$arCPL[49][0] = "Windows-Sicherheitscenter - Warnungseinstellungen"
$arCPL[50][0] = "Windows Firewall - Allgemein"
$arCPL[51][0] = "Hardware-Assistant"
$arCPL[52][0] = "Gamecontroller"
$arCPL[53][0] = "Netzwerkverbindungen"
$arCPL[54][0] = "Netzwerkinstallationsassistent"
$arCPL[55][0] = "Benutzerkonten"
$arCPL[56][0] = "ODBC-Datenquellen-Administrator"
$arCPL[57][0] = "Eigenschaften von Energieoptionen"

$arCPL[0][1] = "SYSDM.CPL"
$arCPL[1][1] = "SYSDM.CPL"
$arCPL[2][1] = "SYSDM.CPL"
$arCPL[3][1] = "SYSDM.CPL"
$arCPL[4][1] = "SYSDM.CPL"
$arCPL[5][1] = "SYSDM.CPL"
$arCPL[6][1] = "SYSDM.CPL"
$arCPL[7][1] = "SYSDM.CPL"
$arCPL[8][1] = "DESK.CPL"
$arCPL[9][1] = "DESK.CPL"
$arCPL[10][1] = "DESK.CPL"
$arCPL[11][1] = "DESK.CPL"
$arCPL[12][1] = "DESK.CPL"
$arCPL[13][1] = "APPWIZ.CPL"
$arCPL[14][1] = "APPWIZ.CPL"
$arCPL[15][1] = "APPWIZ.CPL"
$arCPL[16][1] = "APPWIZ.CPL"
$arCPL[17][1] = "ACCESS.CPL"
$arCPL[18][1] = "ACCESS.CPL"
$arCPL[19][1] = "ACCESS.CPL"
$arCPL[20][1] = "ACCESS.CPL"
$arCPL[21][1] = "ACCESS.CPL"
$arCPL[22][1] = "INETCPL.CPL"
$arCPL[23][1] = "INETCPL.CPL"
$arCPL[24][1] = "INETCPL.CPL"
$arCPL[25][1] = "INETCPL.CPL"
$arCPL[26][1] = "INETCPL.CPL"
$arCPL[27][1] = "INETCPL.CPL"
$arCPL[28][1] = "INETCPL.CPL"
$arCPL[29][1] = "INTL.CPL"
$arCPL[30][1] = "INTL.CPL"
$arCPL[31][1] = "INTL.CPL"
$arCPL[32][1] = "MAIN.CPL"
$arCPL[33][1] = "MAIN.CPL"
$arCPL[34][1] = "MAIN.CPL"
$arCPL[35][1] = "MAIN.CPL"
$arCPL[36][1] = "MAIN.CPL"
$arCPL[37][1] = "MAIN.CPL"
$arCPL[38][1] = "MMSYS.CPL"
$arCPL[39][1] = "MMSYS.CPL"
$arCPL[40][1] = "MMSYS.CPL"
$arCPL[41][1] = "MMSYS.CPL"
$arCPL[42][1] = "MMSYS.CPL"
$arCPL[43][1] = "TELEPHON.CPL"
$arCPL[44][1] = "TELEPHON.CPL"
$arCPL[45][1] = "TELEPHON.CPL"
$arCPL[46][1] = "TIMEDATE.CPL"
$arCPL[47][1] = "TIMEDATE.CPL"
$arCPL[48][1] = "WSCUI.CPL"
$arCPL[49][1] = "WSCUI.CPL"
$arCPL[50][1] = "FIREWALL.CPL"
$arCPL[51][1] = "HDWWIZ.CPL"
$arCPL[52][1] = "JOY.CPL"
$arCPL[53][1] = "NCPA.CPL"
$arCPL[54][1] = "NETSETUP.CPL"
$arCPL[55][1] = "NUSRMGR.CPL"
$arCPL[56][1] = "ODBCCP32.CPL"
$arCPL[57][1] = "POWERCFG.CPL"

$arCPL[0][2] = 0
$arCPL[1][2] = 1
$arCPL[2][2] = 2
$arCPL[3][2] = 3
$arCPL[4][2] = -1
$arCPL[5][2] = 4
$arCPL[6][2] = 5
$arCPL[7][2] = 6
$arCPL[8][2] = -1
$arCPL[9][2] = 0
$arCPL[10][2] = 1
$arCPL[11][2] = 2
$arCPL[12][2] = 3
$arCPL[13][2] = 0
$arCPL[14][2] = 1
$arCPL[15][2] = 2
$arCPL[16][2] = 3
$arCPL[17][2] = 1
$arCPL[18][2] = 2
$arCPL[19][2] = 3
$arCPL[20][2] = 4
$arCPL[21][2] = 5
$arCPL[22][2] = 0
$arCPL[23][2] = 1
$arCPL[24][2] = 2
$arCPL[25][2] = 3
$arCPL[26][2] = 4
$arCPL[27][2] = 5
$arCPL[28][2] = 6
$arCPL[29][2] = 0
$arCPL[30][2] = 1
$arCPL[31][2] = 2
$arCPL[32][2] = 0
$arCPL[33][2] = 1
$arCPL[34][2] = 2
$arCPL[35][2] = 3
$arCPL[36][2] = 4
$arCPL[37][2] = 5
$arCPL[38][2] = 0
$arCPL[39][2] = 1
$arCPL[40][2] = 2
$arCPL[41][2] = 3
$arCPL[42][2] = 4
$arCPL[43][2] = 0
$arCPL[44][2] = 1
$arCPL[45][2] = 2
$arCPL[46][2] = 0
$arCPL[47][2] = 1
$arCPL[48][2] = -99
$arCPL[49][2] = 0
$arCPL[50][2] = -99
$arCPL[51][2] = -99
$arCPL[52][2] = -99
$arCPL[53][2] = -99
$arCPL[54][2] = -99
$arCPL[55][2] = -99
$arCPL[56][2] = -99
$arCPL[57][2] = -99

$guiCPL = GUICreate("Generiere CPL - CmdLine", 625, 513, -1, -1)
GUISetOnEvent($GUI_EVENT_CLOSE, "guiCPLClose")
$Group1 = GUICtrlCreateGroup(" Suche      ( OHNE Suchbegriff wird Liste neu geladen )", 8, 8, 609, 49)
$inSearch = GUICtrlCreateInput("", 40, 26, 433, 21)
GUICtrlSetTip(-1, 'Mit Suche OHNE Suchbegriff' & @LF & 'wird die Liste wieder neu geladen.')
$btnSearch = GUICtrlCreateButton("Start", 500, 26, 100, 21, $BS_DEFPUSHBUTTON)
GUICtrlSetOnEvent(-1, "btnSearchClick")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$List1 = GUICtrlCreateList("", 8, 64, 609, 357)
GUICtrlSetOnEvent(-1, "List1Click")
$Group2 = GUICtrlCreateGroup(" Cmd-Line ", 8, 432, 609, 73)
$inCmdOut = GUICtrlCreateInput("", 40, 448, 433, 21, BitOR($ES_AUTOHSCROLL,$ES_READONLY))
GUICtrlSetColor(-1, 0x00008B)
$btnShow = GUICtrlCreateButton("&Test", 500, 448, 100, 21, 0)
GUICtrlSetOnEvent(-1, "btnShowClick")
$btnRaw = GUICtrlCreateButton("Kopiere &String pur", 68, 477, 150, 21, 0)
GUICtrlSetOnEvent(-1, "btnRawClick")
$btnRun = GUICtrlCreateButton("Kopiere String als: &Run( )", 295, 477, 150, 21, 0)
GUICtrlSetOnEvent(-1, "btnRunClick")
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
_setList()

HotKeySet("!t", "btnShowClick")
HotKeySet("!s", "btnRawClick")
HotKeySet("!r", "btnRunClick")

While 1
	Sleep(100)
WEnd

Func _setList()
	For $i = 0 To UBound($arCPL)-1
		GUICtrlSetData($List1, $arCPL[$i][0])
	Next
EndFunc

Func btnRawClick()
	Local $file = GUICtrlRead($inCmdOut)
	If $file <> '' Then
		ClipPut($file)
		MsgBox(0, '', $file & @LF & @LF & 'wurde in Zwischenablage kopiert' )
	EndIf
EndFunc

Func btnRunClick()
	Local $file = GUICtrlRead($inCmdOut), $str
	If $file <> '' Then
		$str = "Run('" & $file & "')"
		ClipPut($str)
		MsgBox(0, '', $str & @LF & @LF & 'wurde in Zwischenablage kopiert' )
	EndIf
EndFunc

Func btnSearchClick()
	Local $toSearch = GUICtrlRead($inSearch)
	ReDim $arSearch[1]
	$arSearch[0] = ''
	_GUICtrlListClear($List1)
	If $toSearch = '' Then
		_setList()
	Else
		For $i = 0 To UBound($arCPL)-1
			If StringInStr($arCPL[$i][0], $toSearch) Then
				If $arSearch[0] = '' Then
					$arSearch[0] = $arCPL[$i][0]
				Else
					ReDim $arSearch[UBound($arSearch)+1]
					$arSearch[UBound($arSearch)-1] = $arCPL[$i][0]
				EndIf
			EndIf
		Next
		For $i = 0 To UBound($arSearch)-1
			GUICtrlSetData($List1, $arSearch[$i])
		Next
	EndIf
EndFunc

Func btnShowClick()
	Local $file = GUICtrlRead($inCmdOut)
	If $file <> '' Then Run($file)
EndFunc

Func guiCPLClose()
	Exit
EndFunc

Func List1Click()
	$currPosIndex = _GUICtrlListGetCaretIndex($List1)
	For $i = 0 To UBound($arCPL)-1
		If $arCPL[$i][0] = _GUICtrlListGetText($List1, $currPosIndex) Then ExitLoop
	Next
	GUICtrlSetData($inCmdOut, _Generate($arCPL[$i][1], $arCPL[$i][2]))
EndFunc

Func _Generate($CPL, $PARAM)
	Local $cmd = "control.exe "
	If $PARAM <> -99 Then
		$cmd &= $CPL & ",," & $PARAM
	Else
		$cmd &= $CPL
	EndIf
	Return $cmd
EndFunc 