Terminal Ejemplo

y programas personales para otros como tu, puede que te corrijan ;)
Responder
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Terminal Ejemplo

Mensaje por Dany »

Bueno nada especial. hace tiempo hice proyecto con una terminal, saque todo y deje solo el ejemplo de una terminal que acepta comandos (creados por uno claro).

simplemente se agregan mas funciones y comandos y ya.


captura.
Imagen


Código:

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 = ">> Dany Terminal" & @CRLF & ">> "
Global $iGoblal_Total = 0
Global $sDate = @MDAY & "/" & @MON & "/" & @YEAR
Global $fSave = False
Global $sfIndex = 0
#EndRegion

;~ Interface
#Region
$hGUI = GUICreate("Dany 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 :)"
	GUICtrlSetData($hEdit, $sData)
	$sfIndex = 0
	$iReset = 1
EndFunc   ;==>_Comando1

Saludos
  • ............................................Imagen
    ......................................Imagen
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Terminal Ejemplo

Mensaje por Chefito »

Jajajaja, parece divertido. Me recuerda algo a un script que hice hace mucho mucho tiempo. Una pasada de largo y complicado....sobre todo en ese momento que sabia menos autoit. Ejecutaba scripts muy muy parecidos a los de autoit. Recogia los scrips desde un espacio web.
Creo recordar que era para atacar distintas psginas que mandaban sms gratis, cuando los sms valian pasta :smt003 . Casi de tiempo jajaja. Creo recordar que utilice para la gui una imagen de un telefono revolucionario que acababa de salir.....el iphone :smt005 .
Queria que se actualizase con este codigo mio para no tener que estar actualizando el programa cada dos por tres. La idea era buena, pero muy complicada. Como casi siempre me pasa, al final lo abandone. Una pena.

Luego lo pruebo en un ordenata. Ahora no puedo porque estoy desde e telefono movil.

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Responder