Un ejemplo de terminal que hice hace algun tiempo.


Imagen

Código: Seleccionar todo

#include <GUIConstantsEx.au3>
#include <WinAPI.au3>
#include <GuiEdit.au3>
#include <Array.au3>
#include <File.au3>

;~ Declaraciones
#Region
Global $hEdit, $hGUI, $hLB_Active, $hLB_LastCout, $hLB_Total, $hLB_Date, $iENTER, $iMsg = 0
Global $sData = ">> "
Global $iReset = 0
Global Const $sFont = "Courier New"
Global Const $aMode[6] = ["Comando1", "Comando2", "Comando3", "Comando4", "Salir", "Ayuda"]; Entre otros
Global Enum $eCom1, $eCom2, $eCom3, $eCom4, $eSalir, $eAyuda
Global $iState_Mode = $eCom1
Global Const $sTC = ">> Pink Terminal" & @CRLF & ">> "
Global $iGoblal_Total = 0
Global $sDate = @MDAY & "/" & @MON & "/" & @YEAR
Global $fSave = False
Global $sfIndex = 0
#EndRegion

;~ Interface
#Region
$hGUI = GUICreate("Pink Terminal", 400, 350, -1, -1)
GUISetBkColor(0x191919);Gris
$hEdit = GUICtrlCreateEdit($sTC, 10, 5, 380, 290, $ES_MULTILINE)
GUICtrlSetFont(-1, 9, 400, 0, $sFont)
GUICtrlSetBkColor(-1, 0x000000) ; Black
GUICtrlSetColor(-1, 0x00ff00) ;Green

$hLB_Active = GUICtrlCreateLabel("Activo: ", 10, 300, 200, 20)
GUICtrlSetFont(-1, 9, 400, 0, $sFont)
GUICtrlSetBkColor(-1, 0x191919) ;Gris
GUICtrlSetColor(-1, 0x00ff00) ;Green

$hLB_Date = GUICtrlCreateLabel($sDate, 300, 300, 200, 20)
GUICtrlSetFont(-1, 9, 400, 0, $sFont)
GUICtrlSetBkColor(-1, 0x191919) ;Gris
GUICtrlSetColor(-1, 0x00ff00) ;Green

$iENTER = GUICtrlCreateDummy()
$iBS = GUICtrlCreateDummy()


Global $AccelKeys[2][3] = [["{ENTER}", $iENTER],["{BS}", $iBS]]; Set accelerators
GUISetAccelerators($AccelKeys)
#EndRegion



GUISetState()

ControlClick($hGUI, "", $hEdit);Quitar Selected

;~ Main Loop
While $iMsg <> $GUI_EVENT_CLOSE
	$iMsg = GUIGetMsg()
	Select
		Case $iMsg = $iENTER
			Enter()

		Case $iMsg = $iBS
			Bs()
	EndSelect
WEnd



;~funcion Modo
Func Mode($sString)
	Local $sMode = ""
	$sMode = StringStripWS(StringRight($sString, StringLen($sString) - 3), 8)

	If ($sMode) = "" Then
		$iReset = 1
		Return
	EndIf


	Select
		Case $sMode = $aMode[$eCom1]
			GUICtrlSetData($hLB_Active, "Activo:" & $aMode[$eCom1])
			ConsoleWrite("Mode: " & $aMode[$eCom1] & @CRLF)
			$iState_Mode = $eCom1
			_Comando1()
			$iReset = 0
			Return 0
		Case $sMode = $aMode[$eCom2]
			GUICtrlSetData($hLB_Active, "Activo:" & $aMode[$eCom2])
			ConsoleWrite("Mode: " & $aMode[$eCom2] & @CRLF)
			$iState_Mode = $eCom2
			$iReset = 0

			Return 0
		Case $sMode = $aMode[$eCom3]
			GUICtrlSetData($hLB_Active, "Activo:" & $aMode[$eCom3])
			ConsoleWrite("Mode: " & $aMode[$eCom3] & @CRLF)
			$iState_Mode = $eCom3
			$iReset = 0
			Return 0
		Case $sMode = $aMode[$eCom4]
			GUICtrlSetData($hLB_Active, "Activo:" & $aMode[$eCom4])
			ConsoleWrite("Mode: " & $aMode[$eCom4] & @CRLF)
			$iState_Mode = $eCom4
			$iReset = 0

			Return 0
		Case $sMode = $aMode[$eSalir]
			GUICtrlSetData($hLB_Active, "Activo:" & $aMode[$eSalir])
			ConsoleWrite("Mode: " & $aMode[$eSalir] & @CRLF)
			$iState_Mode = $eSalir
			$iReset = 0
			_Exit()
			Return 0

		Case $sMode = $aMode[$eAyuda]
			GUICtrlSetData($hLB_Active, "Activo:" & $aMode[$eAyuda])
			ConsoleWrite("Mode: " & $aMode[$eAyuda] & @CRLF)
			$iState_Mode = $eAyuda
			$iReset = 0
			_Ayuda()
			Return 0

		Case Else
;~          GUICtrlSetData($hLB_Active,"Activo :" & $sMode)
			ConsoleWrite("Mode: " & "Caso Else: " & $sMode & @CRLF)
			$iReset = 0
			Return 0

	EndSelect

EndFunc   ;==>Mode


;~ Ayuda
Func _Ayuda()
	For $i = 0 To UBound($aMode) - 1
		$sData &= @CRLF & ">> " & $aMode[$i]
	Next
	GUICtrlSetData($hEdit, $sData & @CRLF)
	$sfIndex = 0
	$iReset = 1
EndFunc   ;==>_Ayuda


;~ Salir
Func _Exit()
	GUICtrlSetData($hEdit, ">> Bye Bye :)...")
	Sleep(2000)
	Exit
EndFunc   ;==>_Exit

;~ Limpiar
Func Clean()
;~    $sData = ">> "
	$sData = $sTC
	GUICtrlSetData($hEdit, $sData)
	$sfIndex = 0
	$iReset = 0
EndFunc   ;==>Clean


;~ Funcion on Enter
Func Enter()
	$sData = GUICtrlRead($hEdit)
	Local $sCurrentLine = ""
	If _WinAPI_GetFocus() = GUICtrlGetHandle($hEdit) Then
		ConsoleWrite("Reset value: " & $iReset & @CRLF)
		If _GUICtrlEdit_GetLineCount($hEdit) = 18 Then $iReset = 1
		If $iReset = 1 Then
			Clean()
		Else
			$sCurrentLine = _GUICtrlEdit_GetLine($hEdit, _GUICtrlEdit_GetLineCount($hEdit) - 1)
			ConsoleWrite("[Enter] Fué Presionado!" & @CRLF)
			ConsoleWrite("Linea: " & _GUICtrlEdit_GetLine($hEdit, _GUICtrlEdit_GetLineCount($hEdit) - 1) & @CRLF)
			GUICtrlSetData($hEdit, $sData & @CRLF & ">> ")
			Mode($sCurrentLine)
		EndIf
	EndIf
EndFunc   ;==>Enter

;~ Funcion on BS
Func Bs()
	$sData = GUICtrlRead($hEdit)
	If _WinAPI_GetFocus() = GUICtrlGetHandle($hEdit) Then
		If (StringMid($sData, StringLen($sData) - 1) == "> ") Then
			ConsoleWrite("[BS] Fué Presionado!" & @CRLF)
			GUICtrlSetData($hEdit, StringMid($sData, 1, StringLen($sData) - 5))
		Else
			GUICtrlSetData($hEdit, StringMid($sData, 1, StringLen($sData) - 1))
		EndIf
	EndIf
EndFunc   ;==>Bs

;Ejemplo de comando
Func _Comando1()
	$sData &= @CRLF & ">> Se ejecuta el Comando 1 (Un Beep) :)"
	Beep(100, 1000)
	GUICtrlSetData($hEdit, $sData)
	$sfIndex = 0
	$iReset = 1
EndFunc   ;==>_Comando1
Saludos
Imagen
Gracias Pink , bueno lerte , un saludo compa
Indetectables RAT v.0.9.5

@Indetectables Team
Responder

Volver a “Fuentes”