ich wusste gar nicht, dass kopieren so schwierig sein kann.
In Paule's Script sind die Punke eingefasst...
Beiträge von Schnuffel
-
-
den Punkt musst Du mit "" einfassen:
Spoiler anzeigen
[autoit]$aTmp = StringSplit($sFile, ".")
[/autoit]
$sFileName = StringTrimRight($sFile, StringLen($aTmp[$aTmp[0]])+1)
$sFileExt = "." & $aTmp[$aTmp[0]]
ob Dein Script dann funktioniert habe ich nicht getestet... -
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Global $text = ""
[/autoit] [autoit][/autoit] [autoit]GUICreate("My GUI Checkbox") ; will create a dialog box that when displayed is centered
[/autoit] [autoit][/autoit] [autoit]$Parameter1 = GUICtrlCreateCheckbox("-nohide", 10, 10, 120, 20)
[/autoit] [autoit][/autoit] [autoit]
$Parameter2 = GUICtrlCreateCheckbox("-w", 10, 30, 120, 20)
$Parameter3 = GUICtrlCreateCheckbox("-ns", 10, 50, 120, 20)
$button = GUICtrlCreateButton("in ini schreiben", 10, 80,100,20)
GUISetState() ; will display an dialog box with 1 checkbox; Run the GUI until the dialog is closed
[/autoit] [autoit][/autoit] [autoit]
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
If $msg = $button Then
If GUICtrlRead($Parameter1) = 1 Then $text &= "-nohide"
If GUICtrlRead($Parameter2) = 1 Then $text &= " -w"
If GUICtrlRead($Parameter3) = 1 Then $text &= " -s"
MsgBox(0,"",$text) ; hier kannst Du jetzt stattdessen iniwrite (.....) einfügen
$text = ""EndIf
[/autoit]
WEnd -
Spoiler anzeigen
[autoit]#include <ButtonConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>#Region ### START Koda GUI section ### Form=C:\Users\alex\Desktop\Login.kxf
[/autoit] [autoit][/autoit] [autoit]
$Login = GUICreate("Login", 203, 124, 201, 125)
GUISetBkColor(0x000000)
$Input_1 = GUICtrlCreateInput("", 56, 56, 121, 21)
$Input_2 = GUICtrlCreateInput("", 56, 24, 121, 21)
$PW = GUICtrlCreateLabel("PW", 16, 56, 27, 22)
GUICtrlSetFont(-1, 11, 400, 0, "DejaVu Serif Condensed")
GUICtrlSetColor(-1, 0x3399FF)
$ID = GUICtrlCreateLabel("ID", 16, 24, 20, 22)
GUICtrlSetFont(-1, 11, 400, 0, "DejaVu Serif Condensed")
GUICtrlSetColor(-1, 0x3399FF)
$Save = GUICtrlCreateButton("Save", 56, 88, 83, 25, 0)If FileExists(@ScriptDir&"\config.ini") Then
[/autoit] [autoit][/autoit] [autoit]
If IniRead(@ScriptDir&"\config.ini", "Config", "ID", "NotFound") <> "NotFound" Then
$readID = IniRead(@ScriptDir&"\config.ini", "Config", "ID", "NotFound")
$readPW = IniRead(@ScriptDir&"\config.ini", "Config", "PW", "NotFound")
MsgBox(0,"","ID und Passwort sind bereits vorhanden!")
Exit
EndIf
EndIf
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###While 1
[/autoit]
$msg = GUIGetMsg()
If $msg == $GUI_EVENT_CLOSE Then
GUIDelete()
ExitLoop
EndIf
; Führe Aktionen aus beim Drücken auf "Save"
If $msg == $Save Then
;Breche ab wenn das ID-Feld leer ist
If GUICtrlRead($Input_2) == "" Then
MsgBox( 64, "Achtung!", "Die ID wurde nicht eingetragen!")
ContinueLoop
EndIf
;Breche ab wenn das PW-Feld leer ist
If GUICtrlRead($Input_1) == "" Then
MsgBox( 64, "Achtung!", "Das PW wurde nicht eingetragen!")
ContinueLoop
EndIf
;Schreibe ID und PW in eine Ini-Datei
iniWrite (@ScriptDir & "\" & "config.ini", "Config", "ID", GUICtrlRead($Input_2))
iniWrite (@ScriptDir & "\" & "config.ini", "Config", "PW", GUICtrlRead($Input_1))
GUIDelete()
EndIf
WEnd -
If ProcessExists("") Then ProcessClose("")
siehe Hilfe... -
okay, ich denke Du müsstest Dir Fast2's DllCall umschreiben auf folgende Funktion:
WTSQuerySessionInformation Function
Info's siehe hierVielleicht kann Fast2 ja unterstützen...
-
-
Oh je,
BugFix ich danke Dir...
Hatte voll das Brett vor dem Kopf.
-
Hallo zusammen,
ich möchte beim Beenden des Script's eine SQLite-Datenbank löschen.
Anscheinend wird diese trotz _SQLite_Shutdown nicht "freigegeben".
Kann ich das irgendwie forcierenSpoiler anzeigen
[autoit]#include <SQLite.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <SQLite.dll.au3>
$db = "master.db"_SQLite_Startup()
[/autoit]
_SQLite_Open($db)
_SQLite_Exec(-1, "CREATE TABLE [user] ([id] INTEGER NOT NULL PRIMARY KEY,[username] text NULL,[vorname] text NULL,[nachname] text NULL,[install_date] text NULL,[db_name] text NULL);")
_SQLite_Exec(-1, "CREATE TABLE [allgemein] ([leer] text NULL,[install_date] text NULL,[pass] text NULL,[encrypt] text NULL) ;")
_SQLite_Exec(-1, "INSERT INTO allgemein VALUES('1','1','1','1');")
_SQLite_Close($db)
_SQLite_Shutdown()
FileDelete($db)
MsgBox(0,"",@error)Edit: hab noch #include <SQLite.dll.au3> eingefügt...
-
verwende für die Labels folgendes:
Spoiler anzeigen
[autoit]GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
[/autoit] -
vielleicht hilft Dir das weiter zum Verständnis ...
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
#Include <Array.au3>GUICreate("",150,80)
[/autoit] [autoit][/autoit] [autoit]
$button1 = GUICtrlCreateButton("Statusanzeige",10,10,130,20)
GUICtrlSetBkColor(-1,0x000000)
GUICtrlSetColor(-1,0xFFFFFF)
GUICtrlSetFont(-1, 7)
$button2 = GUICtrlCreateButton("klick mich ...",10,40,130,20)
GUICtrlSetBkColor(-1,0x000000)
GUICtrlSetColor(-1,0xFFFFFF)
GUICtrlSetFont(-1, 7)
GUISetState()
Global $states[6]
$states[0] = $GUI_DISABLE
$states[1] = $GUI_ENABLE
$states[2] = $GUI_SHOW
$states[3] = $GUI_HIDE
$states[4] = $GUI_FOCUS
$states[5] = $GUI_NOFOCUS
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
Exit
Case $msg = $button1Case $msg = $button2
[/autoit]
$color = "0x" & Hex(Random(0,16777215),6)
$ran = Random(0,5)
GUICtrlSetBkColor($button1,$color)
GUICtrlSetState($button1,$states[$ran])
GUICtrlSetData($button1,$states[$ran])
EndSelect
WEnd -
Du kannst sehr wohl If Anweisungen in 2 Zeilen schreiben, Du hast nur die "And" Anweisung vergessen
Spoiler anzeigen
[autoit]$var1 = True
[/autoit] [autoit][/autoit] [autoit]
$var2 = FalseIf $var1 = true And _
[/autoit]
$var2 = false Then
MsgBox(0,"",@OSBuild&" "&@OSLang&" "&@OSServicePack&" "&@OSType&" "&@OSVersion)
EndIf -
Hallo BeritoX,
ich hab da mal Dein Script erweitert.
Ich denke damit kannst Du erstmal basteln...Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#Region ### START Koda GUI section ### Form=
$Form2 = GUICreate("Dialog", 316, 238, 353, 211)
GUISetIcon("D:\003.ico")
$GroupBox1 = GUICtrlCreateGroup("", 8, 1, 297, 177)
$Label1 = GUICtrlCreateLabel("Test ?", 18, 16, 73, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Radio1 = GUICtrlCreateRadio("Ja", 41, 192, 63, 41)
$Radio2 = GUICtrlCreateRadio("Nein", 208, 192, 65, 41)
$Button1 = GUICtrlCreateButton("Ok", 120, 192, 65, 33, 0)
Global $aa = 0, $bb = 0, $cc = 0, $dd = 0
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###While 1
[/autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
If GUICtrlRead($Radio1) = 1 Then
$aa += 1
$cc += 1
MsgBox(0,"",$aa&" "&$cc)
EndIf
If GUICtrlRead($Radio2) = 1 Then
$aa -= 1
$bb += 2
MsgBox(0,"",$aa&" "&$bb)
EndIf
EndSwitch
WEnd -
Hallo Raupi, ich gebe Dir Recht.
Aber dann bitte auch selber dran halten
siehe Funktion main()
so macht das ja lkeinen Sinn, das war ja der Grund meiner Veränderung.Spoiler anzeigen
[autoit]$text1 = GuiCtrlRead($Edit1)
[/autoit]
$text1 = GuiCtrlRead($Edit1)
Send($text1&" "&$text2) -
ich hab den Code nur von einem oberen Post kopiert und die Funktion main() angepasst und es testweise bei mir laufen lassen.
Der Rest stand schon in dem Code.
Ich hatte nur gesehn, das die Variable $text1 zweimal nacheinander deklariert wurde. -
also wenn, dann schon so:
Spoiler anzeigen
[autoit]#include <EditConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <GuiEdit.au3>
GUICreate("Mein erster Gui", 250, 120)
$Edit1 = GUICtrlCreateInput("", 10, 10)
$Edit2 = GUICtrlCreateInput("", 10, 50)
$button=GUICtrlCreateButton("OK",10,80,100,30)
GUICtrlSetOnEvent("", "Main")
GUISetOnEvent($GUI_EVENT_CLOSE,"clo")GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
clo()
Case $button
Main()
EndSwitch
WEndFunc Main()
[/autoit] [autoit][/autoit] [autoit]
$text1 = GuiCtrlRead($Edit1)
$text2 = GuiCtrlRead($Edit2)
MsgBox("","",$text1&" "&$text2)
EndFuncFunc clo()
[/autoit]
Exit
EndFuncPS: kreativer Funktionsname für close
-
Run(@ScriptDir & "\Tools\mrt\mrt.exe /F:Y",@ScriptDir&"\Tools\mrt",@SW_HIDE)
-
sieh Dir mal mit mrt.exe /? die Startparameter der Software an
-
Hallo Apfeltasche,
ich hätte da einen Ansatz für Dich.
Hab das jetzt nicht mit Tab's probiert, geht aber bestimmt auch.
Ist natürlich nur ein Ansatz und weit entfernt davon perfekt zu sein.
Ich denke aber das kann man ausbauen...Spoiler anzeigen
[autoit]#include <GuiConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
#include <GUIConstants.au3>
#include <GuiTab.au3>
#include <Misc.au3>Opt("MustDeclareVars", 1)
[/autoit] [autoit][/autoit] [autoit]
Opt("GUIOnEventMode", 1)
Const $main_gui_width = 860
Const $main_gui_height = 710
Const $child_gui_width = 860
Const $child_gui_height = 660
Const $btn_bkcol = 0xd4d0c8
Const $btn_col = 0x000000
Const $btn_bkcol_a = 0x0a246a
Const $btn_col_a = 0xffffff
Global $dll = DllOpen("user32.dll")
Global $btn_child[6]
Global $btn_shown = 1
Global $strg_t = 0
Global $title = "Demo für Child-Fenster"
Global $dummy = GUICtrlCreateLabel("", 0, 0, 1, 1)
Global $main_gui = GUICreate($title, $main_gui_width, $main_gui_height, -1, -1, BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))
Global $child1_gui, $child2_gui, $child3_gui, $child4_gui, $child5_gui, $child_akt, $child_old
$btn_child[1] = GUICtrlCreateButton("Button 1", 10, 0, 160, 30)
GUICtrlSetFont(-1, 10, 300)
GUICtrlSetOnEvent(-1, "child_show")
$btn_child[2] = GUICtrlCreateButton("Button 2", 180, 0, 160, 30)
GUICtrlSetFont(-1, 10, 300)
GUICtrlSetOnEvent(-1, "child_show")
GUICtrlSetState(-1, $GUI_HIDE)
$btn_child[3] = GUICtrlCreateButton("Button 3", 350, 0, 160, 30)
GUICtrlSetFont(-1, 10, 300)
GUICtrlSetOnEvent(-1, "child_show")
GUICtrlSetState(-1, $GUI_HIDE)
$btn_child[4] = GUICtrlCreateButton("Button 4", 520, 0, 160, 30)
GUICtrlSetFont(-1, 10, 300)
GUICtrlSetOnEvent(-1, "child_show")
GUICtrlSetState(-1, $GUI_HIDE)
$btn_child[5] = GUICtrlCreateButton("Button 5", 690, 0, 160, 30)
GUICtrlSetFont(-1, 10, 300)
GUICtrlSetOnEvent(-1, "child_show")
GUICtrlSetState(-1, $GUI_HIDE)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")child1_gui()
[/autoit] [autoit][/autoit] [autoit]
child2_gui()
child3_gui()
child4_gui()
child5_gui()$child_akt = $child1_gui ; um letzten aktiven Button wieder neutral zu färben
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetBkColor($btn_child[1], $btn_bkcol_a)
GUICtrlSetColor($btn_child[1], $btn_col_a)
GUICtrlSetState($dummy, $GUI_FOCUS)
GUISetState(@SW_SHOW, $main_gui)
GUISetState(@SW_SHOW, $child1_gui)While 1
[/autoit] [autoit][/autoit] [autoit]
If _IsPressed("11", $dll) And _IsPressed("54", $dll) Then
show_btn()
EndIf
Sleep(1)
WEndFunc show_btn()
[/autoit] [autoit][/autoit] [autoit]
If $btn_shown = 5 Then Return
GUICtrlSetState($btn_child[$btn_shown + 1], $GUI_Show)
$btn_shown += 1
$strg_t = 0
Sleep(500)
EndFunc ;==>show_btnFunc child_show()
[/autoit] [autoit][/autoit] [autoit]
$child_old = $child_akt
Switch @GUI_CtrlId
Case $btn_child[1]
If $child_akt <> $child1_gui Then
GUISetState(@SW_HIDE, $child_akt)
GUISetState(@SW_SHOW, $child1_gui)
$child_akt = $child1_gui
GUICtrlSetBkColor($btn_child[1], $btn_bkcol_a)
GUICtrlSetColor($btn_child[1], $btn_col_a)
GUICtrlSetState($dummy, $GUI_FOCUS)
EndIf
Case $btn_child[2]
If $child_akt <> $child2_gui Then
GUISetState(@SW_HIDE, $child_akt)
GUISetState(@SW_SHOW, $child2_gui)
$child_akt = $child2_gui
GUICtrlSetBkColor($btn_child[2], $btn_bkcol_a)
GUICtrlSetColor($btn_child[2], $btn_col_a)
GUICtrlSetState($dummy, $GUI_FOCUS)
EndIf
Case $btn_child[3]
If $child_akt <> $child3_gui Then
GUISetState(@SW_HIDE, $child_akt)
GUISetState(@SW_SHOW, $child3_gui)
$child_akt = $child3_gui
GUICtrlSetBkColor($btn_child[3], $btn_bkcol_a)
GUICtrlSetColor($btn_child[3], $btn_col_a)
GUICtrlSetState($dummy, $GUI_FOCUS)
EndIf
Case $btn_child[4]
If $child_akt <> $child4_gui Then
GUISetState(@SW_HIDE, $child_akt)
GUISetState(@SW_SHOW, $child4_gui)
$child_akt = $child4_gui
GUICtrlSetBkColor($btn_child[4], $btn_bkcol_a)
GUICtrlSetColor($btn_child[4], $btn_col_a)
GUICtrlSetState($dummy, $GUI_FOCUS)
EndIf
Case $btn_child[5]
If $child_akt <> $child5_gui Then
GUISetState(@SW_HIDE, $child_akt)
GUISetState(@SW_SHOW, $child5_gui)
$child_akt = $child5_gui
GUICtrlSetBkColor($btn_child[5], $btn_bkcol_a)
GUICtrlSetColor($btn_child[5], $btn_col_a)
GUICtrlSetState($dummy, $GUI_FOCUS)
EndIf
EndSwitch
If $child_old <> $child_akt Then
Switch $child_old
Case $child1_gui
GUICtrlSetBkColor($btn_child[1], $btn_bkcol)
GUICtrlSetColor($btn_child[1], $btn_col)
Case $child2_gui
GUICtrlSetBkColor($btn_child[2], $btn_bkcol)
GUICtrlSetColor($btn_child[2], $btn_col)
Case $child3_gui
GUICtrlSetBkColor($btn_child[3], $btn_bkcol)
GUICtrlSetColor($btn_child[3], $btn_col)
Case $child4_gui
GUICtrlSetBkColor($btn_child[4], $btn_bkcol)
GUICtrlSetColor($btn_child[4], $btn_col)
Case $child5_gui
GUICtrlSetBkColor($btn_child[5], $btn_bkcol)
GUICtrlSetColor($btn_child[5], $btn_col)
EndSwitch
EndIf
EndFunc ;==>child_show
Func child1_gui()
$child1_gui = GUICreate("", $child_gui_width, $child_gui_height, 0, 10, BitOR($WS_CHILD, $WS_TABSTOP), $WS_EX_CONTROLPARENT, $main_gui)
GUICtrlCreateLabel("Dies ist Seite 1", 50, 200, 200, 30)
GUICtrlSetFont(-1, 12, 600)
GUISetState(@SW_HIDE, $child1_gui)
EndFunc ;==>child1_gui
Func child2_gui()
$child2_gui = GUICreate("", $child_gui_width, $child_gui_height, 0, 10, BitOR($WS_CHILD, $WS_TABSTOP), $WS_EX_CONTROLPARENT, $main_gui)
GUICtrlCreateLabel("Dies ist Seite 2", 50, 200, 200, 30)
GUICtrlSetFont(-1, 12, 600)
GUISetState(@SW_HIDE, $child2_gui)
EndFunc ;==>child2_gui
Func child3_gui()
$child3_gui = GUICreate("", $child_gui_width, $child_gui_height, 0, 10, BitOR($WS_CHILD, $WS_TABSTOP), $WS_EX_CONTROLPARENT, $main_gui)
GUICtrlCreateLabel("Dies ist Seite 3", 50, 200, 200, 30)
GUICtrlSetFont(-1, 12, 600)
GUISetState(@SW_HIDE, $child3_gui)
EndFunc ;==>child3_gui
Func child4_gui()
$child4_gui = GUICreate("", $child_gui_width, $child_gui_height, 0, 10, BitOR($WS_CHILD, $WS_TABSTOP), $WS_EX_CONTROLPARENT, $main_gui)
GUICtrlCreateLabel("Dies ist Seite 4", 50, 200, 200, 30)
GUICtrlSetFont(-1, 12, 600)
GUISetState(@SW_HIDE, $child4_gui)
EndFunc ;==>child4_gui
Func child5_gui()
$child5_gui = GUICreate("", $child_gui_width, $child_gui_height, 0, 10, BitOR($WS_CHILD, $WS_TABSTOP), $WS_EX_CONTROLPARENT, $main_gui)
GUICtrlCreateLabel("Dies ist Seite 5", 50, 200, 200, 30)
GUICtrlSetFont(-1, 12, 600)
GUISetState(@SW_HIDE, $child5_gui)
EndFunc ;==>child5_guiFunc CLOSEClicked()
[/autoit]
Exit 0
EndFunc ;==>CLOSEClicked -
Hallo MatthiasG,
ich habe das mal nachgestellt.
Also ich würde das folgendermaßen machen:
Wenn Du das Malware-Removal-Tool laufen läßt, erstellt das Programm einen temporären Ordner in einem lokalen Laufwerk mit einer wirren Zahlen-Buchstaben Kombination.
In diesem Ordner befindet sich auch die mrt.exe.
Die ist es, auf die es ankommt.
Diese kopierst Du dir in Deinen Tools-Ordner unter "\mrt".
So kannst Du Updates auch einfach austauschen, ohne das Script nochmal anpassen zu müssen.
(Ich habe den WinText Zusatz "Jan 2009" mal weggelassen.)
Und hier das angepasste Script:Spoiler anzeigen
[autoit]#RequireAdmin
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
#include <ProgressConstants.au3>
#include <SendMessage.au3>$ProgressGUI = GUICreate("Form1", 545, 25, -1, -1, $WS_POPUP, BitOr($WS_EX_TOOLWINDOW,$WS_EX_TOPMOST))
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$Progress = GUICtrlCreateProgress(0, 0, 545, 25)$Risiko = 3
[/autoit] [autoit][/autoit] [autoit]
$win = "Microsoft Windows-Tool zum Entfernen bösartiger Software"
Run(@ScriptDir & "\Tools\mrt\mrt.exe",@ScriptDir&"\Tools\mrt",@SW_HIDE)
GUISetState(@SW_SHOW)
WinWait($win)ControlClick($win, "", 12324)
[/autoit] [autoit][/autoit] [autoit]If $Risiko < 3 Then
[/autoit] [autoit][/autoit] [autoit]
ControlClick($win, "", 1034)
Else
ControlClick($win, "", 1033)
EndIfControlClick($win, "", 12324)
[/autoit] [autoit][/autoit] [autoit]$ProgressHandle = ControlGetHandle($win,"",1021) ; Handle zur 1. Progressbar des Fensters "Fenstertitel" holen
[/autoit] [autoit][/autoit] [autoit]
$LowLimit = _SendMessage($ProgressHandle,$PBM_GETRANGE,True)
$HighLimit = _SendMessage($ProgressHandle,$PBM_GETRANGE,False)Do
[/autoit] [autoit][/autoit] [autoit]
$progressbarPOS = _SendMessage($ProgressHandle,$PBM_GETPOS) ; mit dem Handle kann dann mit _SendMessage die Position abgefragt werden.
$prozent = ($progressbarPOS-$LowLimit)/($HighLimit-$LowLimit)*100
GUICtrlSetData($Progress, $prozent)
Sleep(100)
Until $prozent = 100WinWait($win,"",5)
[/autoit]
ControlClick($win,"", 12325)
PS: ich würde aber nicht nur den Scrollbalken anzeigen, sondern darunter schon immer noch einen Text, was Dein Prog gerade macht.
Lass die User doch nicht dumm sterben...