Página 1 de 1

Identificador de móviles

Publicado: 15 May 2012, 13:23
por frp64
Hola, he variado la aplicación de Chefito para identificar cualquier móvil: prefijo, tecnología, fecha de alta, operador,..., a una ventana GUI:

Código: Seleccionar todo

#Include <Array.au3>
#Include <File.au3>
#Include <Ie.au3>
#Include <String.au3>
#include <GUIConstants.au3>
#include <GuiEdit.au3>

Dim $numero

AutoItSetOption ("GUIOnEventMode", 1)

$gui = GUICreate ("Identificador de móviles", 310, 200, -1, -1)
GUISetOnEvent ($GUI_EVENT_CLOSE, "_exit")
GUICtrlCreateLabel ("Número de móvil:", 10, 10, 100, 25)
$input = GUICtrlCreateInput ("", 120, 10, 100, 25)
GUICtrlCreateLabel ("Prefijo:", 10, 50, 40, 25)
$prefijo = GUICtrlCreateInput ("", 50, 50, 40, 20, $ES_READONLY)
GUICtrlCreateLabel ("Tecnología:", 120, 50, 80, 25)
$tecno = GUICtrlCreateInput ("", 210, 50, 90, 20, $ES_READONLY)
GUICtrlCreateLabel ("Estado:", 10, 90, 40, 25)
$estado = GUICtrlCreateInput ("", 50, 90, 80, 20, $ES_READONLY)
GUICtrlCreateLabel ("Fecha Alta:", 140, 90, 80, 25)
$fecha = GUICtrlCreateInput ("", 220, 90, 80, 20, $ES_READONLY)
GUICtrlCreateLabel ("Operador:", 10, 130, 80, 25)
$operador = GUICtrlCreateInput ("", 90, 130, 210, 20, $ES_READONLY)
GUICtrlCreateLabel ("Marca Comercial:", 10, 170, 120, 25)
$marca = GUICtrlCreateInput ("", 130, 170, 170, 20, $ES_READONLY)
$boton = GUICtrlCreateButton ("Buscar", 230, 10, 70, 25)
GUICtrlSetOnEvent (-1, "_movil")
GUISetState (@SW_SHOW)

While 1
	Sleep (10)
WEnd

Func _movil()
	SplashTextOn ("", "Espere...", 80, 40, -1, -1, 1, "Comic Sans", 10, 10)
	$numero = GUICtrlRead($input)
	Local $Info[6]
	If $numero=="" Then
		SetError(1)
		Return "Debe especificarse un número de teléfono móvil válido"
	EndIf
	$NumDiv=StringSplit($numero, "")
	If (Not IsArray($NumDiv) Or $NumDiv[0]==0) Then
		SetError(1)
		Return "Debe especificarse un número de teléfono móvil válido"
	EndIf
	If ($NumDiv[0]<>9 Or $NumDiv[1]<>"6") Then
		SetError(1)
		Return $numero &" no es válido"
	EndIf
	$IeObj=_IECreate("http://www.gsmspain.com/prefijos/", 0, 0, 1, 1)
	If @Error<>0 Then
		SetError(1)
		Return "Ocurrió un error al conectar con la base de datos"
	EndIf
	$IeForm=_IEFormGetCollection($IeObj, 1)
	$InpNum=_IEGetObjByName($IeForm, "num")
	_IeFormElementSetValue($InpNum, $numero)
	_IEFormSubmit($IeForm)
	_IeLoadWait($IeObj)
	$Result=_IeBodyReadText($IeObj)
	_IeQuit($IeObj)
	If stringInStr($Result, "No se puede mostrar la página")<>0 Then
		SetError(1)
		Return "La base de datos no está disponible en éste momento"
	EndIf
	$Result=StringReplace($Result, @CRLF&@CRLF&@CRLF, @CRLF)
	$Result=StringReplace($Result, @CRLF&@CRLF, @CRLF)
	If StringInStr($Result, "Prefijo:")==0 Then
		SetError(1)
		If StringInStr($Result, "El numero "&$numero&" no es de ningun operador español o es de nueva adjudicación")<>0 Then
			Return "El número "&$numero&" no es de ningún operador móvil español o es de nueva adjudicación"
		Else
			SetError(1)
			Return "Error al consultar "&$numero
		EndIf
	EndIf
	$Result=StringReplace($Result, "Prefijo:"&@CRLF, "Prefijo: ")
	$Result=StringReplace($Result, "Tecnología servicio:"&@CRLF, "Tecnología servicio: ")
	$Result=StringReplace($Result, "Estado:"&@CRLF, "Estado: ")
	$Result=StringReplace($Result, "Fecha asignación:"&@CRLF, "Fecha asignación: ")
	$Result=StringReplace($Result, "Operador:"&@CRLF, "Operador: ")
	$Result=StringReplace($Result, "Marca comercial:"&@CRLF, "Marca comercial: ")
	$ResultDiv=StringSplit($Result, @CRLF)
	If (Not IsArray($ResultDiv) Or $ResultDiv[0]==0) Then
		SetError(1)
		Return "Error al consultar "&$numero
	EndIf
	For $I=1 To $ResultDiv[0] Step +1
		If ($ResultDiv[$I]==@CRLF Or $ResultDiv[$I]=="" Or $ResultDiv[$I]==" " Or $ResultDiv[$I]==@Tab) Then ContinueLoop
		Select
		Case StringInStr($ResultDiv[$I], "Prefijo: ")<>0
			$Info[0]=StringReplace($ResultDiv[$I], "Prefijo: ", "")
			SplashOff()
			GUICtrlSetData ($prefijo, $Info[0])
			ConsoleWrite ($Info[0])
		Case StringInStr($ResultDiv[$I], "Tecnología servicio: ")<>0
			$Info[1]=StringReplace($ResultDiv[$I], "Tecnología servicio: ", "")
			ConsoleWrite ($Info[1])
			GUICtrlSetData ($tecno, $Info[1])
		Case StringInStr($ResultDiv[$I], "Estado: ")<>0
			$Info[2]=StringReplace($ResultDiv[$I], "Estado: ", "")
			GUICtrlSetData ($estado, $Info[2])
			ConsoleWrite ($Info[2])
		Case StringInStr($ResultDiv[$I], "Fecha asignación: ")<>0
			$Info[3]=StringReplace($ResultDiv[$I], "Fecha asignación: ", "")
			GUICtrlSetData ($fecha, $Info[3])
			ConsoleWrite ($Info[3])
		Case StringInStr($ResultDiv[$I], "Operador: ")<>0
			$Info[4]=StringReplace($ResultDiv[$I], "Operador: ", "")
			GUICtrlSetData ($operador, $Info[4])
			ConsoleWrite ($Info[4])
		Case StringInStr($ResultDiv[$I], "Marca comercial: ")<>0
			$Info[5]=StringReplace($ResultDiv[$I], "Marca comercial: ", "")
			GUICtrlSetData ($marca, $Info[5])
			ConsoleWrite ($Info[5])
		EndSelect
	Next
EndFunc

Func _exit()
	Exit
EndFunc
La ventana GUI queda de esta forma:

Imagen

Saludos