#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$hForm = GUICreate("Form1", 320, 160, -1, -1)
$nInput1 = GUICtrlCreateInput("", 10, 10, 300, 20)
$nInput2 = GUICtrlCreateInput("", 10, 40, 300, 20)
$nInput3 = GUICtrlCreateInput("", 10, 70, 300, 20)
$nInput4 = GUICtrlCreateInput("", 10, 100, 40, 20, $ES_READONLY)
GUISetState()
GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func WM_COMMAND($hWnd, $imsg, $iwParam, $ilParam)
Local $nNotifyCode, $nID, $sFromInput1, $sFromInput2
$nNotifyCode = BitShift($iwParam, 16)
$nID = BitAND($iwParam, 0xFFFF)
If $nNotifyCode = $EN_CHANGE Then
Switch $nID
Case $nInput1, $nInput2
$sFromInput1 = GUICtrlRead($nInput1)
$sFromInput2 = GUICtrlRead($nInput2)
If $sFromInput1 And $sFromInput2 Then
GUICtrlSetData($nInput3, StringLeft($sFromInput1 & '_' & $sFromInput2, 20))
GUICtrlSetData($nInput4, StringLen(GUICtrlRead($nInput3)))
EndIf
Case $nInput3
GUICtrlSetData($nInput3, StringLeft(GUICtrlRead($nInput3), 20))
GUICtrlSetData($nInput4, StringLen(GUICtrlRead($nInput3)))
EndSwitch
EndIf
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_COMMAND