#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form = GUICreate("Seriennummer", 232, 83)
$1 = GUICtrlCreateInput("", 48, 30, 136)
$Label = GUICtrlCreateLabel("Format: XXXX-XXXX-XXXX-XXXX", 32, 8, 163, 17)
GUICtrlSetLimit($1, 19)
$Button = GUICtrlCreateButton("Weiter", 144, 56, 75, 25, $WS_GROUP)
GUICtrlSetState(-1, $GUI_DISABLE)
GUISetState()
$iLen_prev = 0
GUIRegisterMsg($WM_COMMAND, '_WM_COMMAND')

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd

Func _WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    If BitAND($wParam, 0x0000FFFF) = $1 Then
        GUICtrlSetData($1, StringUpper(GUICtrlRead($1))) ;Großschreibung
		$i = GUICtrlRead($1)
        $iLen = StringLen($i) + 1
        If Mod($iLen, 5) = 0 And $iLen > $iLen_prev And $iLen < 20 Then GUICtrlSetData($1, $i & "-")
		If Mod($iLen, 5) = 0 And $iLen < $iLen_prev Then GUICtrlSetData($1, StringLeft($i, $iLen - 2))
        $iLen_prev = $iLen
        If $iLen = 20 Then
            GUICtrlSetState($Button, $GUI_ENABLE)
        Else
            GUICtrlSetState($Button, $GUI_DISABLE)
        EndIf
    EndIf
    Return $GUI_RUNDEFMSG
EndFunc
