#RequireAdmin
#cs ----------------------------------------------------------------------------

 League of Legends - Get it fixed!
 Author:         Matricus
 Version:		 0.8

 Program Function:
	Solve multiple issues with the League of Legends client.
	Provides a graphical user interface.

Copyright by Aye Carumba Entertainment Studios

#ce ----------------------------------------------------------------------------

#include <GUIConstants.au3>
#include <EditConstants.au3>
#include <ButtonConstants.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#include <ProgressConstants.au3>

Opt("GUIOnEventMode", 1)

; _____________________________________________________________________________________________________________
; ### Launcher  Beginn###
; # Launcher: GUI Beginn #
;$FixIt_Main = GUICreate("LoL - Get it fixed!", 410, 298, 490, 305)
;GUISetState(@SW_HIDE,$FixIt_Main)
Global $LoLFixit_Launcher = GUICreate("LoL- Get it fixed! Launcher", 345, 136, 496, 308)
GUISetFont(10, 400, 0, "Microsoft Sans Serif")
$L_wait = GUICtrlCreateLabel("Bitte einen Moment Geduld.", 16, 16, 167, 20)
$L_primary = GUICtrlCreateLabel("Das Fixing-Tool für League of Legends wird gestartet.", 16, 40, 320, 20)
$Bar_status = GUICtrlCreateProgress(16, 104, 313, 14)
GUICtrlSetColor(-1, 0x008000)
GUICtrlSetBkColor(-1, 0xFFFBF0)
GUICtrlSetTip(-1, "status")
;Global $B_exit = GUICtrlCreateButton("Abbrechen", 280, 98, 83, 25, 0)
$Bar_label = GUICtrlCreateLabel("Status", 18, 80, 310, 19)
GUICtrlSetFont(-1, 9, 800, 0, "Microsoft Sans Serif")
GUISetState(@SW_SHOW)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEclick")
; # Launcher: GUI Ende #

; # Launcher: Start #
GUICtrlSetData($Bar_status, 1)
GUICtrlSetData($Bar_label, "Starte Informationssammlung")
Sleep(1500)
Global $DirEU, $DirUS, $Dir, $Dir2, $DirFault ; => für LoL Verzeichnisse
Global $inetcfg ; => Internet Explorer registry value
Global $OS, $OS1, $OSarch, $OSinstalltemp, $SP, $User, $PCName, $IP1, $IP2 ; => allgemeine Systemdaten
Global $temp, $name, $objItem ; => sonstiges
Global $S_CPUName, $S_CPUmax, $S_CPUatm, $S_CPUcores, $S_CPUcoreSUM, $S_RAM, $S_DispTyp, $S_DispDriver, $S_MBoem, $S_MBmodel ; => Hardware Daten
GUICtrlSetData($Bar_status, 8)

; # Launcher: read registry values #
GUICtrlSetData($Bar_label, "Lese Daten aus Registrierung [LoL US]")
Sleep(750)
$Dir2 = StringSplit(RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{868EC22E-7E82-4760-9265-3F2E705BF24B}", "InstallLocation"), "\")
$i = 2
$DirUS = $Dir2[1]
While $i < $Dir2[0]
	$DirUS = $DirUS & "\" & $Dir2[$i]
	GUICtrlSetData($Bar_status, $i + 10)
	$i = $i + 1
WEnd
Sleep(300)
GUICtrlSetData($Bar_status, 21)
GUICtrlSetData($Bar_label, "Lese Daten aus Registrierung [LoL EU]")
sleep(750)
$Dir = StringSplit(RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\leagueoflegends\leagueoflegends", "UninstallPath"), "\")
$i = 2
$DirEU = $Dir[1]
While $i < $Dir[0]
	$DirEU = $DirEU & "\" & $Dir[$i]
	GUICtrlSetData($Bar_status, $i + 30)
	$i = $i + 1
WEnd
Sleep(300)
GUICtrlSetData($Bar_status, $i + 40)
GUICtrlSetData($Bar_label, "Lese Daten aus Registrierung [Internet Explorer]")
sleep(750)
$inetcfg = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\Current Version\Internet Settings", "GlobalUserOffline")
GUICtrlSetData($Bar_status, $i + 43)
GUICtrlSetData($Bar_label, "Speichere Daten")
sleep(1000)

; # Launcher: read environment data #
GUICtrlSetData($Bar_status, $i + 46)
GUICtrlSetData($Bar_label, "Lese Systemdaten [Betriebssystem]")
sleep(750)
$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = ""
$OSarch = @OSArch
$objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If IsObj($colItems) then
   For $objItem In $colItems
      $OSinstalltemp = StringSplit($objItem.InstallDate, "")
      $OS1 = StringSplit($objItem.Name, "|")
   Next
Endif
$OS = $OS1[1]
$OSinstall = $OSinstalltemp[7] & $OSinstalltemp[8] & "." & $OSinstalltemp[5] & $OSinstalltemp[6] & "." & $OSinstalltemp[1] & $OSinstalltemp[2] & $OSinstalltemp[3] & $OSinstalltemp[4]
;MsgBox(64, "test", $OS & @CRLF & $OSinstall)
GUICtrlSetData($Bar_status, $i + 49)
GUICtrlSetData($Bar_label, "Lese Systemdaten [Update Status]")
sleep(750)
$SP = @OSServicePack
GUICtrlSetData($Bar_status, $i + 52)
GUICtrlSetData($Bar_label, "Lese Systemdaten [PC-Name & Nutzer]")
sleep(750)
$PCName = @ComputerName
$User = @UserName
GUICtrlSetData($Bar_status, $i + 56)
GUICtrlSetData($Bar_label, "Lese Systemdaten [Netzwerk Status]")
sleep(750)
$IP1 = @IPAddress1
$IP2 = @IPAddress2
GUICtrlSetData($Bar_status, $i + 60)

; # Launcher: WMI queries to get hardware data #
GUICtrlSetData($Bar_label, "Lese Systemdaten [Hardware]")
Sleep(500)
$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = ""
GUICtrlSetData($Bar_status, $i + 62)
; RAM
$objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_PhysicalMemoryArray", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
GUICtrlSetData($Bar_status, $i + 64)
If IsObj($colItems) then
   For $objItem In $colItems
      $S_RAM = $objItem.MaxCapacity / 1024 / 1024
	Next
Endif
; CPU
GUICtrlSetData($Bar_status, $i + 66)
$objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Processor", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
GUICtrlSetData($Bar_status, $i + 68)
If IsObj($colItems) then
   For $objItem In $colItems
      $S_CPUatm = $objItem.CurrentClockSpeed
      $S_CPUmax = $objItem.MaxClockSpeed
      $S_CPUName = $objItem.Name
      $S_CPUcores = $objItem.NumberOfCores
      $S_CPUcoreSUM = $objItem.NumberOfLogicalProcessors
   Next
Endif
; Grafik
GUICtrlSetData($Bar_status, $i + 70)
$objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_DisplayConfiguration", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
GUICtrlSetData($Bar_status, $i + 72)
If IsObj($colItems) then
   For $objItem In $colItems
      $S_DispTyp = $objItem.DeviceName
      $S_DispDriver = $objItem.DriverVersion
   Next
Endif
; Mainboard
GUICtrlSetData($Bar_status, $i + 74)
$objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
GUICtrlSetData($Bar_status, $i + 76)
If IsObj($colItems) then
   For $objItem In $colItems
      $S_MBoem = $objItem.Manufacturer
      $S_MBmodel = $objItem.Model
   Next
Endif
GUICtrlSetData($Bar_status, $i + 80)

; # Launcher: setting variables #
GUICtrlSetData($Bar_label, "Initialisiere Daten")
GUICtrlSetData($Bar_status, 82)
Global $launcher = "lol.launcher.exe"
sleep(300)
GUICtrlSetData($Bar_status, 84)
Global $run = 0
sleep(300)
GUICtrlSetData($Bar_status, 86)
Global $savepath = @TempDir
sleep(300)
GUICtrlSetData($Bar_status, 88)
sleep(300)
Global $workdir, $rescdir, $Output, $S_RAM
GUICtrlSetData($Bar_status, 90)
GUICtrlSetData($Bar_label, "Lade Oberfläche")
Global $Main_B_upcoming, $Laun_B_close, $Laun_B_play, $Laun_B_error, $Shop_B_blank, $Conn_B_analyse, $Info_B_notes, $Win_close, $run_lol
sleep(1000)
GUICtrlSetData($Bar_status, 93)
Global $LoL_EUandUS, $B_EU, $B_US
GUICtrlSetData($Bar_status, 96)
Global $FixIt_Main
GUICtrlSetData($Bar_label, "Starte Programm")
sleep(1000)
GUICtrlSetData($Bar_status, 100)

;MsgBox(64, "test", $S_MBoem & " / " & $S_MBmodel & " / " & $S_DispTyp)

; # Launcher: verify LoL data #
If $DirEU = "" AND $DirUS = "" Then
	MsgBox(48, "LoL - Get it fixed!", "Es konnte keine Installation von League of Legends auf dem System gefunden werden." & @CRLF & "Bitte den Installationsordner manuell auswählen...", 5)
	Global $workdir = FileSelectFolder("Das Installationsverzeichnis konnte nicht automatisch erkannt werden." & @CRLF & "Bitte wähle dein LoL Installationsverzeichnis", "",2,"C:\programme\")
	$rescdir = $workdir
	;main()
	;GUIDelete($LoLFixit_Launcher)
	;GUIDelete($LoL_EUandUS)
	;GUIDelete($B_EU)
	;GUIDelete($B_US)
ElseIf $DirEU <> "" AND $DirUS <> "" Then
	launcher_EUandUS()
EndIf

; ### Launcher Ende ###
; _______________________________________________________________________________________________________________
; _______________________________________________________________________________________________________________
; ### Functions Beginn ###

; # misc: geplante Änderungen #
Func Main_upcoming()
		FileInstall(".\files\upcoming.bat", @TempDir & "\upcoming.bat")
		FileInstall(".\files\upcoming_DE.txt", @TempDir & "\upcoming_DE.txt")
		sleep(500)
		run(@TempDir & "\upcoming.bat","", @SW_HIDE)
EndFunc ; => main_upcoming

; # Launcher: EU oder US (wenn beide gefunden) #
Func launcher_EUandUS()
	Global $LoL_EUandUS = GUICreate("LoL - Get it fixed! Both", 423, 130, 484, 456)
	$L_primary = GUICtrlCreateLabel("Es wurde festgestellt das der EU und der US Client installiert ist.", 14, 16, 377, 20)
	GUICtrlSetFont(-1, 10, 400, 0, "Microsoft Sans Serif")
	$L_sub = GUICtrlCreateLabel("Bitte Client auswählen für den das Programm Fehler beheben soll.", 8, 40, 393, 20)
	GUICtrlSetFont(-1, 10, 400, 0, "Microsoft Sans Serif")
	Local $B_EU = GUICtrlCreateButton("EU-Client", 72, 72, 107, 41, 0)
	GUICtrlSetFont(-1, 11, 800, 0, "Microsoft Sans Serif")
	Local $B_US = GUICtrlCreateButton("US-Client", 232, 72, 107, 41, 0)
	GUICtrlSetFont(-1, 12, 800, 0, "Microsoft Sans Serif")
	GUISetState(@SW_SHOW, $LoL_EUandUS)
	GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEclick")
	GUISetOnEvent($B_EU, "Button_EU")
	GUISetOnEvent($B_US, "Button_US")
EndFunc ; => launcher_EUandUS

; # Fix: Schließen des Patchers nach Start #
Func Launcher_closing()
	$workdir = $rescdir
	$answer = MsgBox(4, "Patcher Fix", "Es werden einige (temporäre) Dateien auf dem System gelöscht" & @CRLF & @CRLF & "Fortfahren?")
		if $answer = 6 Then
			if ProcessExists("lol.launcher.exe") OR ProcessExists("launcher.exe") OR ProcessExists("league of legends.exe") Then
				MsgBox(48, "Patcher Fix", "Mindestens 1 Prozess von League of Legends ist noch aktiv." & @CRLF & "Um das Problem beheben zu können müssen alle LoL-Prozesse geschlossen sein." & @CRLF & @CRLF & "In 5 Sekunden werden sie automatisch geschlossen", 6)
				ProcessClose("lol.launcher.exe")
				ProcessClose("launcher.exe")
				ProcessClose("league of legends.exe")
			EndIf
			FileInstall(".\files\LauncherFix.vbs", @TempDir & "\launcherfix.vbs")
			FileInstall(".\files\launcherfix.bat", @TempDir & "\launcherfix.bat")
			sleep(1000)
			if FileExists(@TempDir & "\launcherfix.vbs") AND FileExists(@TempDir & "\launcherfix.bat") Then
				run(@TempDir & "\launcherfix.bat","", @SW_HIDE)
			Else
				MsgBox(32, "Patcher Fix", "Es ist ein Fehler bei der Ausführung aufgetreten. Starte neuen Versuch")
				FileInstall(".\files\LauncherFix.vbs", @TempDir & "\launcherfix.vbs")
				FileInstall(".\files\launcherfix.bat", @TempDir & "\launcherfix.bat")
				sleep(1000)
				if FileExists(@TempDir & "\launcherfix.vbs") AND FileExists(@TempDir & "\launcherfix.bat") Then
					run(@TempDir & "\launcherfix.bat","", @SW_HIDE)
				Else
					MsgBox(16, "Patcher Fix", "Konnte Skript aufgrund eines Fehlers nicht ausführen." & @CRLF & "Bitte diesen Fehler im Forum berichten mit den Systemdaten - Danke!")
				EndIf
			EndIf
			MsgBox(64, "Patcher Fix", "Die temporären Dateien von LoL konnten erfolgreich gelöscht werden")
			if $run = 1 Then
				MsgBox(64, "Run LoL", "Ich würde in v1.0 nun das starten: " & $workdir & "\" & $launcher)
			EndIf
		EndIf
EndFunc ; Launcher_closing

; # Fix: Play-Button nicht aktiv nach Patch #
Func Launcher_play()
	$workdir = $rescdir
	$answer = MsgBox(4, "Spiel-Button Fix", "Es werden die Einstellungen des Internet Explorers zurückgesetzt." & @CRLF & @CRLF & "Fortfahren?")
		if $answer = 6 Then
			if ProcessExists("iexplore.exe") Then
				MsgBox(64, "Spiel-Button Fix", "Der Internet Explorer ist noch aktiv. Für diesen Fix muss er geschlossen sein." & @CRLF & "Er wird automatisch geschlossen...", 3)
				ProcessClose("iexplore.exe")
			EndIf
			run("control inetcpl.cpl,,6")
				WinWaitActive("Eigenschaften von Internet", "Internet Explorer-Einstellungen zurücksetzen")
				sleep(500)
				send("!z")
				WinWaitActive("Internet Explorer-Einstellungen zurücksetzen", "Möchten Sie wirklich alle Internet Explorer-Einstellungen zurücksetzen?")
				sleep(300)
				send("!p")
				sleep(300)
				send("!z")
				sleep(1000)
				WinWaitActive("Internet Explorer-Einstellungen zurücksetzen", "Internet Explorer-Einstellungen werden zurückgesetzt")
				sleep(5000)
				send("!s")
				if WinActive("Internet Explorer-Einstellungen zurücksetzen", "Internet Explorer-Einstellungen werden zurückgesetzt") Then
					sleep(5000)
					send("!s")
				EndIf
				MsgBox(64, "IE Zurücksetzung", "Die Einstellungen konnten erfolgreich zurückgesetzt werden.")
					sleep(1000)
					if $run = 1 Then
						MsgBox(64, "variablen", "Ich würde in v1.0 nun das starten: " & $workdir & "\" & $launcher)
					EndIf
		EndIf
EndFunc ; Launcher_play

; # Fix: Fehler im Startprogramm #
Func Launcher_error()
		MsgBox(64, "launcher error", "This feature will come soon!")
		MsgBox(64, "launcher error", "It will do following: " & @CRLF & @CRLF & "- check the install path of LoL" & @CRLF & ">> prompt an information to reinstall the game" & @CRLF & "- install latest Adobe AIR" & @CRLF & "- install .NET Framework 3.5")
EndFunc ; Launcher_error

; # Fix: weiße/schwarze Seite im Shop #
Func Shop_blank()
		MsgBox(64, "shop blank", "Dieser Fix ist noch nicht implementiert.")
		MsgBox(64, "shop blank", "It will do following: " & @CRLF & @CRLF & "- reset the configuration of Internet Explorer" & @CRLF & "- set https://shop.lol-europe.com as trusted site (to accept scripts)")
EndFunc ; shop_blank

; # helper: Verbindungsanalyse #
Func Connection_trace()
		$answer = MsgBox(4, "Verbindungs Analyse", "Es wird das Programm WinMTR gestartet" & @CRLF & @CRLF & "Fortfahren?")
		; => Überprüfung ob Firefox oder Internet Explorer laufen
		if $answer = 6 Then
			if ProcessExists("iexplore.exe") Then
				$answer = MsgBox(4, "Verbindungs Analyse", "Der Internet Explorer ist noch aktiv." & @CRLF & "Er kann das Ergebnis verfälschen, z.B. wenn Dateien heruntergeladen werden." & @CRLF & "Soll er geschlossen werden?", 7)
				If $answer = 6 Then
					ProcessClose("iexplore.exe")
				EndIf
			EndIf
			if ProcessExists("firefox.exe") Then
				$answer = MsgBox(4, "Verbindungs Analyse", "Der Firefox-Browser ist noch aktiv." & @CRLF & "Er kann das Ergebnis verfälschen, z.B. wenn Dateien heruntergeladen werden." & @CRLF & "Soll er geschlossen werden?", 7)
				If $answer = 6 Then
					ProcessClose("firefox.exe")
				EndIf
			EndIf
			; => entpacken von WinMTR
			FileInstall(".\files\winmtr.exe", @TempDir & "\winmtr.exe")
			; => start von WinMTR inkl. automatische Konfiguration und trace-Beginn
			sleep(500)
			run(@TempDir & "\winmtr.exe")
				WinWaitActive("WinMTR - 0.8")
				send("lol-europe.com")
				sleep(1000)
				send("!O")
				WinWaitActive("Options", "- WinMTR - 0.8 -")
				send("{del}")
				send("{del}")
				send("{del}")
				send("2.0")
				send("!O")
				sleep(500)
				; => Hinweis auf Auswertungs-Helfer <> Angebot den Trace nach 5 Minuten zu stoppen, ein Log zu erzeugen und den "Helfer" zu starten.
				$answer = MsgBox(4, "Verbindungsanalyse", "Um ein genaueres Bild zu bekommen, sollte der Test mindestens 5 Minuten laufen." & @CRLF & "Soll der Test automatisch nach 5 Minuten angehalten werden?" & @CRLF & @CRLF & "Hinweis: Die Auswertung wird nur nach automatischen Abbruch unterstützt.")
				if $answer = 6 Then
					WinActivate("WinMTR - 0.8","")
					send("!S")
					sleep(500)
					WinSetOnTop("WinMTR - 0.8","",0)
					$savepath = "C:\Verbindungsanalyse.txt"
					sleep(300000)
					WinActivate("WinMTR - 0.8")
					send("!S")
					sleep(1500)
					send("!T")
					sleep(500)
					send($savepath)
					sleep(500)
					send("!S")
					sleep(500)
					if WinActive("Speichern unter bestätigen") Then ; => sollte bereits eine Log-Datei vorhanden sein hier die Bestätigung zum Überschreiben
						send("!J")
					EndIf
					WinClose("WinMTR - 0.8")
					MsgBox(64, "Verbindungsanalyse", "Ablaufverfolgung beendet. Öffne Log...", 5)
					FileInstall(".\files\trace.bat",  @TempDir & "\trace.bat")
					sleep(500)
					run( @TempDir & "\trace.bat","", @SW_HIDE)
					MsgBox(64, "Verbindungsanalyse", "Speicherort des Logs: C:\verbindungsanalyse.txt" & @CRLF & "Starte Auswertungs-Helfer", 5)
					sleep(1500)
					Connection_trace_result()
				Else
					WinActivate("WinMTR - 0.8","")
					send("!S")
				EndIf
		EndIf
endfunc ; connection_trace

; # helper: Auswertung der Verbindungsanalyse #
Func Connection_trace_result()
		MsgBox(64, "Auswertungs-Helfer", "Diese Funktion ist noch nicht implementiert." & @CRLF & "Bis dahin kannst du deine Ergebnisse jedoch im Forum veröffentlichen.")
EndFunc ; => Connection_trace_result

; # misc: Aktualisierungsnotizen #
func Info_notes()
		FileInstall(".\files\changelog.bat", @TempDir & "\changelog.bat")
		FileInstall(".\files\changelog_DE.txt", @TempDir & "\changelog_DE.txt")
		sleep(500)
		run(@TempDir & "\changelog.bat","", @SW_HIDE)
EndFunc ; Info_notes

; ### Functions Ende ###
; _______________________________________________________________________________________________________
; _______________________________________________________________________________________________________

; ### Beginn Haupt-Interface ###

Func Main()
While 1
	Sleep(100)
WEnd
; => verstecken und deaktivieren der möglicherweise noch aktiven launcher Fenster
;WinSetState("LoL- Get it fixed! Launcher","", @SW_HIDE)
;WinSetState("LoL- Get it fixed! Launcher","", @SW_DISABLE)
;WinSetState("LoL - Get it fixed! Both","", @SW_HIDE)
;WinSetState("LoL - Get it fixed! Both","", @SW_DISABLE)
;While $workdir = ""
;	sleep(500)
;WEnd

; => Plausibilitätsprüfung ob $workdir mit Daten gefüllt ist, ggf. setzen der Variable mit EU/US-Pfad
If $workdir = "" Then
	If $DirEU <> "" Then
		$workdir = $DirEU
	ElseIf $DirUS <> "" Then
		$workdir = $DirUS
	EndIf
EndIf
if $rescdir = "" Then
	$rescdir = $workdir
EndIf

; => Zuweisung der korrekten Betriebssystemarchitektur-strings anhand der Daten
If $OSarch = "X86" Then
	$OSarch = "32 bit"
ElseIf $OSarch = "X64" Then
	$OSarch = "64 bit"
EndIf

;MsgBox(64, "test", $OS & " " & $OSarch)

;MsgBox(64, "test", $workdir & @CRLF & $rescdir & @CRLF & $Output)
Opt("GUIOnEventMode", 1)
$FixIt_Main = GUICreate("LoL - Get it fixed!", 385, 277, 490, 300)
GUISetIcon("D:\005.ico")
$Fix_TabCon = GUICtrlCreateTab(8, 8, 396, 256)
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
$T_Main = GUICtrlCreateTabItem("Haupt")
$Main_L_primary = GUICtrlCreateLabel("Willkommen!", 24, 48, 124, 28)
GUICtrlSetFont(-1, 14, 800, 0, "Microsoft Sans Serif")
$Main_L_intro1 = GUICtrlCreateLabel("Dieses Programm wird dich bei der Fehlerbehebung für", 24, 88, 332, 20)
GUICtrlSetFont(-1, 10, 400, 0, "Microsoft Sans Serif")
$Main_L_intro2 = GUICtrlCreateLabel("League of Legends unterstützen.", 24, 112, 196, 20)
GUICtrlSetFont(-1, 10, 400, 0, "Microsoft Sans Serif")
$Main_L_intro3 = GUICtrlCreateLabel("Dafür einfach eine der Kategorien wählen.", 24, 136, 250, 20)
GUICtrlSetFont(-1, 10, 400, 0, "Microsoft Sans Serif")
$Main_L_info = GUICtrlCreateLabel("Das Tool enthält bereits einige Fehlerbehebungen - weitere", 24, 168, 356, 20)
GUICtrlSetFont(-1, 10, 400, 0, "Microsoft Sans Serif")
$Main_L_info2 = GUICtrlCreateLabel("sind bereits in Entwicklung. Was das sein wird?", 24, 192, 281, 20)
GUICtrlSetFont(-1, 10, 400, 0, "Microsoft Sans Serif")
$Main_L_info3 = GUICtrlCreateLabel("Schaut's euch an :", 24, 224, 111, 20)
GUICtrlSetFont(-1, 10, 400, 0, "Microsoft Sans Serif")
$Main_B_upcoming = GUICtrlCreateButton("geplante Änderungen", 160, 216, 147, 33, 0)
GUICtrlSetFont(-1, 9, 800, 0, "Microsoft Sans Serif")
GUICtrlSetOnEvent(-1, "Main_B_upcomingClick")
$T_Laun = GUICtrlCreateTabItem("&Patcher")
$Laun_L_primary = GUICtrlCreateLabel("Patch Probleme", 120, 40, 170, 29)
GUICtrlSetFont(-1, 16, 800, 4, "Microsoft Sans Serif")
$Laun_L_Sub = GUICtrlCreateLabel("Bitte deinen Fehler auswählen", 96, 80, 211, 20)
GUICtrlSetFont(-1, 10, 800, 0, "Microsoft Sans Serif")
$Laun_B_close = GUICtrlCreateButton("Crash", 40, 110, 107, 33, 0)
GUICtrlSetFont(-1, 9, 800, 0, "Microsoft Sans Serif")
GUICtrlSetOnEvent(-1, "Laun_B_closeClick")
$Laun_BL_close1 = GUICtrlCreateLabel("Dies behebt den Fehler, welcher den Patcher", 176, 112, 218, 17)
GUICtrlSetFont(-1, 8, 400, 0, "Microsoft Sans Serif")
$Laun_BL_close2 = GUICtrlCreateLabel("sofort nach Start des Programmes schließt", 184, 128, 202, 17)
GUICtrlSetFont(-1, 8, 400, 0, "Microsoft Sans Serif")
$Laun_B_play = GUICtrlCreateButton("Spielen-Button", 40, 158, 107, 33, 0)
GUICtrlSetFont(-1, 9, 800, 0, "Microsoft Sans Serif")
GUICtrlSetOnEvent(-1, "Laun_B_playClick")
$Laun_BL_play1 = GUICtrlCreateLabel("Behebt den Fehler wenn der Spielen-Button", 176, 158, 215, 18)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$Laun_BL_play2 = GUICtrlCreateLabel("noch ausgegraut ist nach Patch", 200, 177, 157, 18)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$Laun_B_error = GUICtrlCreateButton("launcher", 40, 208, 107, 33, 0)
GUICtrlSetFont(-1, 10, 800, 0, "Microsoft Sans Serif")
GUICtrlSetOnEvent(-1, "Laun_B_errorClick")
$Laun_BL_error1 = GUICtrlCreateLabel("Dies behebt den Fehler ''Im Startprogramm ist", 174, 208, 220, 18)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$Label1 = GUICtrlCreateLabel("ein Fehler aufgetreten. Bitte neustarten''", 184, 224, 196, 18)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$T_Shop = GUICtrlCreateTabItem("&Shop")
$Shop_L_sub = GUICtrlCreateLabel("Bitte wähle dein Problem aus", 105, 80, 204, 20)
GUICtrlSetFont(-1, 10, 800, 0, "Microsoft Sans Serif")
GUICtrlSetColor(-1, 0x646464)
$Shop_L_primary = GUICtrlCreateLabel("Shop Probleme", 124, 40, 164, 29)
GUICtrlSetFont(-1, 16, 800, 4, "Microsoft Sans Serif")
$Shop_B_blank = GUICtrlCreateButton("leere Seite", 40, 128, 107, 33, 0)
GUICtrlSetFont(-1, 10, 800, 0, "Microsoft Sans Serif")
GUICtrlSetOnEvent(-1, "But_BPClick")
$Shop_BL_blank1 = GUICtrlCreateLabel("Behebt den Fehler der leeren Seite", 184, 128, 195, 19)
GUICtrlSetFont(-1, 9, 400, 0, "Microsoft Sans Serif")
$Shop_BL_blank2 = GUICtrlCreateLabel("wenn man den Shop aufruft.", 202, 144, 158, 19)
GUICtrlSetFont(-1, 9, 400, 0, "Microsoft Sans Serif")
$T_Conn = GUICtrlCreateTabItem("&Verbindung")
$Conn_L_primary = GUICtrlCreateLabel("Verbindungsprobleme", 88, 48, 233, 29)
GUICtrlSetFont(-1, 16, 800, 4, "Microsoft Sans Serif")
$Conn_L_sub1 = GUICtrlCreateLabel("Solltest du Verbindungsabbrüche oder starke Verzögerungen", 24, 88, 368, 20)
GUICtrlSetFont(-1, 10, 400, 0, "Microsoft Sans Serif")
$Conn_L_sub2 = GUICtrlCreateLabel("haben, so kannst du hier eine Analyse der Verbindung", 24, 112, 324, 20)
GUICtrlSetFont(-1, 10, 400, 0, "Microsoft Sans Serif")
$Conn_L_sub3 = GUICtrlCreateLabel("zu den europäischen LoL Servern durchführen.", 24, 136, 278, 20)
GUICtrlSetFont(-1, 10, 400, 0, "Microsoft Sans Serif")
$Conn_B_analyse = GUICtrlCreateButton("Analyse starten", 136, 168, 123, 33, 0)
GUICtrlSetFont(-1, 10, 800, 0, "Microsoft Sans Serif")
GUICtrlSetOnEvent(-1, "Button1Click")
$Conn_BL_analyse = GUICtrlCreateLabel("Hinweis: Für die Analyse wird das mitgelieferte Programm", 24, 216, 345, 20)
GUICtrlSetFont(-1, 10, 400, 0, "Microsoft Sans Serif")
$Conn_BL_analyse2 = GUICtrlCreateLabel("''WinMTR'' (Freeware) gestartet.", 77, 234, 195, 20)
GUICtrlSetFont(-1, 10, 400, 0, "Microsoft Sans Serif")
$T_Info = GUICtrlCreateTabItem("&Info")
$Info_L_primary = GUICtrlCreateLabel("League of Legends - Fixing Tool", 24, 48, 261, 24)
GUICtrlSetFont(-1, 12, 800, 4, "Microsoft Sans Serif")
$Info_L_sub = GUICtrlCreateLabel("aktuelle Version: 0.7", 24, 80, 123, 20)
GUICtrlSetFont(-1, 10, 400, 0, "Microsoft Sans Serif")
$Info_L_sub2 = GUICtrlCreateLabel("Programmiert von Matricus", 24, 101, 152, 19)
GUICtrlSetFont(-1, 9, 400, 0, "Microsoft Sans Serif")
$Info_L_text = GUICtrlCreateLabel("Alle Lösungen basieren auf meinen Erfahrungen - IT-Technik", 24, 136, 362, 20)
GUICtrlSetFont(-1, 10, 400, 0, "Microsoft Sans Serif")
$Info_L_text2 = GUICtrlCreateLabel("im Allgemeinen, sowie LoL an sich. Einige Lösungen basieren", 24, 160, 369, 20)
GUICtrlSetFont(-1, 10, 400, 0, "Microsoft Sans Serif")
$Info_L_text3 = GUICtrlCreateLabel("zudem auf Einträge aus der US Knowledge Base für LoL.", 24, 184, 338, 20)
GUICtrlSetFont(-1, 10, 400, 0, "Microsoft Sans Serif")
$Info_B_notes = GUICtrlCreateButton("Versionsnotizen", 144, 216, 123, 33, 0)
GUICtrlSetFont(-1, 10, 800, 0, "Microsoft Sans Serif")
GUICtrlSetOnEvent(-1, "Info_B_notesClick")
GUICtrlCreateTabItem("")
$Win_close = GUICtrlCreateButton("&Beenden", 328, 267, 75, 25, 0)
GUICtrlSetOnEvent(-1, "Button2Click")
$run_lol = GUICtrlCreateCheckbox(" starte LoL nach einem Fix automatisch", 10, 266, 305, 25)
GUICtrlSetFont(-1, 9, 800, 0, "Microsoft Sans Serif")
GUICtrlSetOnEvent(-1, "Checkbox1Click")
GUISetState(@SW_SHOW)

EndFunc
; ### Ende Haupt-Interface ###
; ___________________________________________________________________________________________________________
; ___________________________________________________________________________________________________________

; ### window events ###

Func CLOSEclick()
	If @GUI_WinHandle = $LoLFixit_Launcher OR @GUI_WinHandle = $FixIt_Main Then
		Exit
	Else
		if @GUI_WinHandle = $LoL_EUandUS Then
			MsgBox(48, "LoL - Get it fixed!", "Achtung! Du hast keinen Client ausgewählt." & @CRLF & "Für kommende Aktionen wird der EU-Client als Standard genommen.")
			WinClose("LoL - Get it fixed! Both")
			$workdir = $DirEU
		EndIf
	EndIf
EndFunc

Func Button_EU()
	$workdir = $DirEU
	;Main()
	;WinClose("LoL - Get it fixed! Both")
EndFunc

Func Button_US()
	$workdir = $DirUS
	;Main()
	;WinClose("LoL - Get it fixed! Both")
EndFunc

Func But_BPClick()

EndFunc
Func Button1Click()

EndFunc
Func Button2Click()

EndFunc
Func Checkbox1Click()

EndFunc
Func Info_B_notesClick()

EndFunc
Func Laun_B_closeClick()

EndFunc
Func Laun_B_errorClick()

EndFunc
Func Laun_B_playClick()

EndFunc
Func Main_B_upcomingClick()

EndFunc