#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=D:\@HomeDrive\Meine Apps\tools\gfx\Schredder.ico
#AutoIt3Wrapper_Outfile=Schredder.exe
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseUpx=y
#AutoIt3Wrapper_Res_Comment=Schredder
#AutoIt3Wrapper_Res_Description=Schredder
#AutoIt3Wrapper_Res_Fileversion=1.1.0.3
#AutoIt3Wrapper_Res_LegalCopyright=© ICE Tec. All rights reserved.
#AutoIt3Wrapper_Res_Language=1031
#AutoIt3Wrapper_Res_Field=CompanyName|ICE Tec
#AutoIt3Wrapper_Res_Field=OriginalFileName|Schredder.exe
#AutoIt3Wrapper_Res_Field=ProductName|Schredder
#AutoIt3Wrapper_Res_Field=ProductVersion|1.1.0.3
#AutoIt3Wrapper_Run_Tidy=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

#include <Array.au3>
#include <Constants.au3>
#include <_SecureDelete.au3>
#include <GUIConstants.au3>
#include "ModernMenuRaw.au3" ; Only unknown constants are declared here

Opt("TrayMenuMode", 1)

Global $option, $aboutitem, $exititem, $i, $autorun, $SecureDirectoryDelete, $result, $var, $msg, $SecureFileDelete
Global $SicherLeochen, $fDelete, $DoD_E_SicherLeochen, $DoD_E_SecureDirectoryDelete, $DoD_E_SecureFileDelete
Global Const $array[7] = [0x55, 0xAA, 0x92, 0x49, 0x24, 0xBB, "SicherGelöscht"]
Global Const $EnglischArray[7] = [0x55, 0xAA, 0x92, 0x49, 0x24, 0xBB, "SecureDeleted"]
Global Const $path = @ScriptFullPath
Global Const $reg1 = "HKLM\Software\Microsoft\Windows\CurrentVersion\Run"
Global Const $reg2 = "Schredder"
Global Const $OSLang = StringInStr("0407 0807 0c07 1007 1407", @OSLang)

; *** Create the tray icon ***
$nTrayIcon1 = _TrayIconCreate("Schredder", @ScriptDir & "\Schredder.exe", 99)
_TrayIconSetClick(-1, 2)
; *** Create the tray context menu ***
$nTrayMenu1 = _TrayCreateContextMenu() ; is the same like _TrayCreateContextMenu(-1) or _TrayCreateContextMenu($nTrayIcon1)
$nSideItem3 = _CreateSideMenu($nTrayMenu1)
$aboutitem = _TrayCreateItem("Schredder") ; is the same like _TrayCreateMenu("Menu", -1) or _TrayCreateMenu("Menu", $nTrayMenu1)
_TrayCreateItem("")
_TrayItemSetIcon(-1, "", 0)
$option = _TrayCreateMenu("Optionen")
_TrayCreateItem("")
_TrayItemSetIcon(-1, "", 0) ; Force changing to ownerdrawn sometimes needed, i.e. in mixed menu
$DoD_E_SicherLeochen = _TrayCreateMenu("Mit DoD E überschreiben")
_TrayCreateItem("")
_TrayItemSetIcon(-1, "", 0)
$SicherLeochen = _TrayCreateMenu("7 mal überschreiben")
_TrayCreateItem("")
_TrayItemSetIcon(-1, "", 0)
$TrayExit = _TrayCreateItem("Beenden")
; *** Sub menu items ***
$TrayAdvanced = _TrayCreateItem("Mit Windows starten", $option, -1, 0)
$DoD_E_SecureDirectoryDelete = _TrayCreateItem("Ordner sicher Löschen", $DoD_E_SicherLeochen)
_TrayCreateItem("", $DoD_E_SicherLeochen)
_TrayItemSetIcon(-1, "", 0)
$DoD_E_SecureFileDelete = _TrayCreateItem("Datei sicher Löschen", $DoD_E_SicherLeochen)
$SecureDirectoryDelete = _TrayCreateItem("Ordner sicher Löschen", $SicherLeochen)
_TrayCreateItem("", $SicherLeochen)
_TrayItemSetIcon(-1, "", 0)
$SecureFileDelete = _TrayCreateItem("Datei sicher Löschen", $SicherLeochen)
autostartcheck()
SetBlueTrayColors()
$arDrives = DriveGetDrive("FIXED")
; icon
_TrayItemSetIcon($aboutitem, "shell32.dll", 1001)
_TrayItemSetIcon($option, "shell32.dll", 177)
_TrayItemSetIcon($TrayAdvanced, "", 0)
_TrayItemSetIcon($DoD_E_SicherLeochen, @ScriptDir & "\Schredder.exe", 99)
_TrayItemSetIcon($DoD_E_SecureDirectoryDelete, "shell32.dll", 4)
_TrayItemSetIcon($DoD_E_SecureFileDelete, "shell32.dll", 185)
_TrayItemSetIcon($SicherLeochen, @ScriptDir & "\Schredder.exe", 99)
_TrayItemSetIcon($SecureDirectoryDelete, "shell32.dll", 4)
_TrayItemSetIcon($SecureFileDelete, "shell32.dll", 185)
_TrayItemSetIcon($TrayExit, "shell32.dll", -28)
_TrayIconSetState() ; Show the tray icon

While 1
	$msg = GUIGetMsg()
	Switch $msg
		Case $aboutitem
			GUICtrlSetState($aboutitem, $GUI_UNCHECKED)
			If $OSLang = 1 Then ;GERMAN
				MsgBox(8256, "Schredder", StringReplace("           Why go you to High School, when you can go High to School _ _ _                                               Schredder v1.1.0.3 _ _                           Mit DoD E überschreiben oder 7 mal mit _                  0x55, 0xAA, 0x92, 0x49, 0x24, 0xBB, ´SicherGelöscht´ _                                                 überschreiben! _ _                    Copyrights: © ICE Technologie. All rights reserved. _                     Greetings from GERMANY (Singen am Hohentwiel)", "_", @CR))
			ElseIf $OSLang < 1 Then ;Englisch
				MsgBox(8256, "Shredder", StringReplace("           Why go you to High School, when you can go High to School _ _ _                                               Shredder v1.1.0.3 _ _                       Overwrite with DoD E or overwrite 7 times with _                     0x55, 0xAA, 0x92, 0x49, 0x24, 0xBB, 'SecureDeleted` _ _                    Copyrights: © ICE Technologie. All rights reserved. _                     Greetings from GERMANY (Singen am Hohentwiel)", "_", @CR))
			EndIf
		Case $TrayAdvanced
			If BitAND(GUICtrlRead($TrayAdvanced), $GUI_UNCHECKED) Then
				GUICtrlSetState($TrayAdvanced, $GUI_CHECKED)
				autostart()
			Else
				GUICtrlSetState($TrayAdvanced, $GUI_UNCHECKED)
				autostart()
			EndIf
		Case $DoD_E_SecureDirectoryDelete
			GUICtrlSetState($DoD_E_SecureDirectoryDelete, $GUI_UNCHECKED)
			DoD_E_OrdnersicherLeochen()
		Case $DoD_E_SecureFileDelete
			GUICtrlSetState($DoD_E_SecureFileDelete, $GUI_UNCHECKED)
			DoD_E_DateisicherLeochen()
		Case $SecureDirectoryDelete
			GUICtrlSetState($SecureDirectoryDelete, $GUI_UNCHECKED)
			OrdnersicherLeochen()
		Case $SecureFileDelete
			GUICtrlSetState($SecureFileDelete, $GUI_UNCHECKED)
			DateisicherLeochen()
		Case $TrayExit
			ExitLoop
	EndSwitch
WEnd

_TrayIconDelete($nTrayIcon1)
Exit

Func autostartcheck()
	RegRead($reg1, $reg2)
	If @error Then
		GUICtrlSetState($TrayAdvanced, $GUI_UNCHECKED)
	Else
		GUICtrlSetState($TrayAdvanced, $GUI_CHECKED)
	EndIf
EndFunc   ;==>autostartcheck

Func SetBlueTrayColors()
	_SetTrayBkColor(0xFFD8C0)
	_SetTrayIconBkColor(0xEE8877)
	_SetTrayIconBkGrdColor(0x703330)
	_SetTraySelectBkColor(0x662222)
	_SetTraySelectRectColor(0x4477AA)
	_SetTraySelectTextColor(0x66FFFF)
	_SetTrayTextColor(0x000000)
EndFunc   ;==>SetBlueTrayColors

Func autostart()
	RegRead($reg1, $reg2)
	If @error Then
		RegWrite($reg1, $reg2, "REG_SZ", $path)
	Else
		RegDelete($reg1, $reg2)
	EndIf
EndFunc   ;==>autostart

Func DoD_E_OrdnersicherLeochen()
	Local $sDir = FileSelectFolder("Ordner sicher Löchen", "", 2)
	If @error Then
		MsgBox(48, "Schredder", @CRLF & "        Keine Ordner ausgewählt", 10)
	Else
		_SecureDirectoryDelete($sDir)
		If @error = 1 Then
			MsgBox(16, "Schredder", $sDir & " existiert nicht", 10)
		ElseIf @error = 2 Then
			MsgBox(16, "Schredder", $sDir & " ist kein Verzeichnis", 10)
		ElseIf @error = 3 Then
			MsgBox(16, "Schredder", "Fehler beim Entfernen des Verzeichnisses", 10)
		ElseIf @error = 4 Then
			MsgBox(16, "Schredder", "Fehler beim Benutzer-Array", 10)
		ElseIf @error = 5 Then
			MsgBox(16, "Schredder", "Fehler beim Zuweisen von Puffern", 10)
		ElseIf @error = 6 Then
			MsgBox(16, "Schredder", "Errors were encountered, but " & $fDelete & " was False for top level dir", 10)
		Else
			MsgBox(64, "Schredder", @CRLF & "     Fertig", 10)
		EndIf
	EndIf
EndFunc   ;==>DoD_E_OrdnersicherLeochen

Func DoD_E_DateisicherLeochen()
	Local $sFile = FileOpenDialog("Datei sicher Löchen", @DesktopDir & "\", "Alle Dateien (*.*)", 1 + 2)
	If @error Then
		MsgBox(48, "Schredder", @CRLF & "        Keine Datei ausgewählt", 10)
	Else
		_SecureFileDelete($sFile)
		If @error = 1 Then
			MsgBox(16, "Schredder", $sFile & " existiert nicht", 10)
		ElseIf @error = 2 Then
			MsgBox(16, "Schredder", $sFile & " ist kein Verzeichnis", 10)
		ElseIf @error = 3 Then
			MsgBox(16, "Schredder", "Fehler beim Entfernen der Datei", 10)
		ElseIf @error = 4 Then
			MsgBox(16, "Schredder", "Fehler beim Benutzer-Array", 10)
		ElseIf @error = 5 Then
			MsgBox(16, "Schredder", "Fehler beim Zuweisen von Puffern", 10)
		ElseIf @error = 6 Then
			MsgBox(16, "Schredder", "Errors were encountered, but " & $fDelete & " was False for top level dir", 10)
		Else
			MsgBox(64, "Schredder", @CRLF & "     Fertig", 10)
		EndIf
	EndIf
EndFunc   ;==>DoD_E_DateisicherLeochen

Func OrdnersicherLeochen()
	Local $sDir = FileSelectFolder("Ordner sicher Löchen", "", 2)
	If @error Then
		MsgBox(48, "Schredder", @CRLF & "        Keine Ordner ausgewählt", 10)
	Else
		_SecureDirectoryDelete($sDir, $array)
		If @error = 1 Then
			MsgBox(16, "Schredder", $sDir & " existiert nicht", 10)
		ElseIf @error = 2 Then
			MsgBox(16, "Schredder", $sDir & " ist kein Verzeichnis", 10)
		ElseIf @error = 3 Then
			MsgBox(16, "Schredder", "Fehler beim Entfernen des Verzeichnisses", 10)
		ElseIf @error = 4 Then
			MsgBox(16, "Schredder", "Fehler beim Benutzer-Array", 10)
		ElseIf @error = 5 Then
			MsgBox(16, "Schredder", "Fehler beim Zuweisen von Puffern", 10)
		ElseIf @error = 6 Then
			MsgBox(16, "Schredder", "Errors were encountered, but " & $fDelete & " was False for top level dir", 10)
		Else
			MsgBox(64, "Schredder", @CRLF & "     Fertig", 10)
		EndIf
	EndIf
EndFunc   ;==>OrdnersicherLeochen

Func DateisicherLeochen()
	Local $sFile = FileOpenDialog("Datei sicher Löchen", @DesktopDir & "\", "Alle Dateien (*.*)", 1 + 2)
	If @error Then
		MsgBox(48, "Schredder", @CRLF & "        Keine Datei ausgewählt", 10)
	Else
		_SecureFileDelete($sFile, $array)
		If @error = 1 Then
			MsgBox(16, "Schredder", $sFile & " existiert nicht", 10)
		ElseIf @error = 2 Then
			MsgBox(16, "Schredder", $sFile & " ist kein Verzeichnis", 10)
		ElseIf @error = 3 Then
			MsgBox(16, "Schredder", "Fehler beim Entfernen der Datei", 10)
		ElseIf @error = 4 Then
			MsgBox(16, "Schredder", "Fehler beim Benutzer-Array", 10)
		ElseIf @error = 5 Then
			MsgBox(16, "Schredder", "Fehler beim Zuweisen von Puffern", 10)
		ElseIf @error = 6 Then
			MsgBox(16, "Schredder", "Errors were encountered, but " & $fDelete & " was False for top level dir", 10)
		Else
			MsgBox(64, "Schredder", @CRLF & "     Fertig", 10)
		EndIf
	EndIf
EndFunc   ;==>DateisicherLeochen
