Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - BlackBlex

Páginas: [1] 2 3
1
Es probable que no entienda los requisitos que planteas pero...

https://docs.microsoft.com/es-es/windows-server/networking/core-network-guide/core-network-guide-windows-server

¿Haz ido alguna vez a un cibercafé?
¿Has visto como controlan los ordenadores el administrador?
A eso me refiero, sólo que en lugar de conexión remota sea mediante consultas SQL
En los software de los cibercafes, tienden a tener una base de datos de por medio.

Porque no usas mejor uno de esos.

¿Que diferencias hay entre que uses un programa para gestionar cibercafés, con el programa que quieres crear?

Porque sinceramente sigo sin entender, el porque de reinventar la rueda con algo tan básico como un sistema de login

Enviado desde mi MotoG3 mediante Tapatalk

2
Underc0de / Re:Grupo de WhatsApp de Underc0de
« en: Julio 28, 2017, 12:30:51 pm »
hola, alguien puede agregarme por favor .
estuve en el grupo hace meses, pero  extravie mi movil y estoy con nuevo movil pero mantengo mi numero.
pero no aparesco conectado en ningun grupo

soy de Bolivia
Puedes enviarle mensaje a algún administrador o co-administrador para que te agrege, aunque creo que esta lleno el grupo, solo seria de que mandes el mensaje.

Enviado desde mi MotoG3 mediante Tapatalk


3
Otros lenguajes / [Cramel] Gestión de conexiones [Ejemplo + Source]
« en: Julio 05, 2017, 10:42:32 pm »
Les traigo el siguiente ejemplo o ejercicio sobre sockets, en este caso les traigo un gestor de pc (clientes), en el cual podremos abrirle la disquera y cerrarsela.





Nota: el ejemplo es algo básico, y podemos decir que podría ser los principios de un "Troyano" al tener un servidor que se pone en escucha, y un cliente que se intenta conectar a X ip, con X puerto; Igual cabe recalcar que puede ser inestable en el uso de esté.


Código fuente del Servidor.cml

Información

Archivo Servidor.cml
Código: Text
  1. '/**
  2. ' * Servidor del gestor de conexiones
  3. ' *
  4. ' * @author  Jovani Pérez Damián (@BlackBlex)
  5. ' *
  6. ' * ==============Information==============
  7. ' *      Filename: Servidor.cml
  8. ' * ---------------------------------------
  9. '*/
  10.  
  11. Importar "Cramel.cml"
  12. Importar "MSVBVM60\MSVBVM60.cml"
  13. Importar "Propio\Cramel2\Sockets\Socket.cml"
  14. Importar "Propio\Cramel2\Interfaz\Interfaz.cml"
  15.  
  16. Var Server:SocketServer
  17.  
  18. Var clientesSocket[]:Entero
  19. Var clientesName[]:Cadena
  20. ReDim clientesSocket, 1
  21. ReDim clientesName, 1
  22.  
  23. Var ServerIniciado:Booleano
  24. ServerIniciado = Falso
  25.  
  26. Var frame:CMLframe
  27. Var listViewConectados:CMLListview
  28. Var botonAbrirCD, botonCerrarCD:CMLBotón
  29.  
  30. Proc iniciarServer
  31.     Repetir
  32.         Var connections, newConnect:Entero
  33.         Var infoThread:Cadena
  34.         newConnect = Server.aceptar
  35.         infoThread = EntCad(newConnect) + "|" + EntCad(connections)
  36.         clientesSocket[connections] = newConnect
  37.         CreateThread(Nulo, 0, [email protected], StrPtr(infoThread), 0, 0)
  38.         connections = connections + 1
  39.         ReDim Preservar clientesSocket, (connections+1)
  40.     PorSiempre
  41. FinProc
  42.  
  43. Proc frameEventoGanarFoco(hWnd:Entero)
  44.     Si ( ServerIniciado = Falso ) Entonces
  45.         ServerIniciado = Verdad
  46.         CreateThread(Nulo, 0, [email protected], Nulo, 0, 0)
  47.     FinSi
  48. FinProc
  49.  
  50. Proc frameEventoTerminar(hWnd:Entero, Referencia Cancelar:Booleano)
  51.     Server.detener
  52. FinProc
  53.  
  54. Crear Server
  55. Crear frame
  56. Crear listViewConectados
  57. Crear botonAbrirCD
  58. Crear botonCerrarCD
  59.  
  60.     Server.iniciar
  61.     Si (Server.escuchar(666) = SOCKET_ERROR) Entonces
  62.         Mensaje("Error al iniciar el socket")
  63.         ExitProcess(0)
  64.     SiNo
  65.         frame.Texto = "Gestor de conexiones - En escucha"
  66.         frame.Ancho = 700
  67.         frame.Alto = 400
  68.         frame.Padre = 0
  69.         frame.Centrar = 1
  70.         frame.construir(WS_OVERLAPPED+WS_CAPTION+WS_SYSMENU)
  71.  
  72.         listViewConectados.PosX  = 10
  73.         listViewConectados.PosY  = 10
  74.         listViewConectados.Ancho = frame.Ancho - 30
  75.         listViewConectados.Alto  = frame.Alto - 100
  76.         listViewConectados.Padre = frame.hWnd
  77.         listViewConectados.fuente.Nombre = "Arial"
  78.         listViewConectados.fuente.Tamaño = 11
  79.         listViewConectados.construir()
  80.  
  81.         Var listColumnas[]:INFO_COLUMNA
  82.         ReDim listColumnas, 5
  83.  
  84.         listColumnas[0].Indice   = 0
  85.         listColumnas[0].Ancho    = (listViewConectados.Ancho/5)
  86.         listColumnas[0].Posición = LVCFMT_LEFT
  87.         listColumnas[0].Texto    = "Nombre"
  88.  
  89.         listColumnas[1].Indice   = 1
  90.         listColumnas[1].Ancho    = (listViewConectados.Ancho/5)
  91.         listColumnas[1].Posición = LVCFMT_CENTER
  92.         listColumnas[1].Texto    = "Dirección IP"
  93.  
  94.         listColumnas[2].Indice   = 2
  95.         listColumnas[2].Ancho    = (listViewConectados.Ancho/5)
  96.         listColumnas[2].Posición = LVCFMT_CENTER
  97.         listColumnas[2].Texto    = "[email protected]"
  98.  
  99.         listColumnas[3].Indice   = 3
  100.         listColumnas[3].Ancho    = (listViewConectados.Ancho/5)
  101.         listColumnas[3].Posición = LVCFMT_CENTER
  102.         listColumnas[3].Texto    = "SO"
  103.  
  104.         listColumnas[4].Indice   = 4
  105.         listColumnas[4].Ancho    = (listViewConectados.Ancho/5)
  106.         listColumnas[4].Posición = LVCFMT_CENTER
  107.         listColumnas[4].Texto    = "Paí[email protected]"
  108.  
  109.         listViewConectados.insertarColumnas(listColumnas)
  110.  
  111.         botonAbrirCD.Texto = "Abrir CD"
  112.         botonAbrirCD.PosX  = 10
  113.         botonAbrirCD.PosY  = frame.Alto - 80
  114.         botonAbrirCD.Ancho = (frame.Ancho/2) - 30
  115.         botonAbrirCD.Alto  = 40
  116.         botonAbrirCD.Padre = frame.hWnd
  117.         botonAbrirCD.construir()
  118.  
  119.         botonCerrarCD.Texto = "Cerrar CD"
  120.         botonCerrarCD.PosX  = (frame.Ancho - botonAbrirCD.Ancho) - 20
  121.         botonCerrarCD.PosY  = botonAbrirCD.PosY
  122.         botonCerrarCD.Ancho = (frame.Ancho/2) - 30
  123.         botonCerrarCD.Alto  = 40
  124.         botonCerrarCD.Padre = frame.hWnd
  125.         botonCerrarCD.construir()
  126.  
  127.         frame.mostrar()
  128.         frame.correr()
  129.     FinSi
  130.  
  131. Proc botonAbrirCDEventClic(hWnd:Entero,Botón:Byte,Presionado:Booleano,X,Y:Entero)
  132.     Seleccionar Botón
  133.         Caso BOTON_IZQUIERDO
  134.             Seleccionar Presionado
  135.                 Caso Falso
  136.                     Var seleccionado, iCount, clienteSocket:Entero
  137.                     Var seleccionadoTxt:Cadena
  138.                     seleccionado = listViewConectados.getItemSelected
  139.  
  140.                     Si ( seleccionado <> -1 ) Entonces
  141.                         seleccionadoTxt = listViewConectados.getItemText(seleccionado, 0)
  142.                         Contar iCount a &clientesName
  143.                             Si ( seleccionadoTxt = clientesName[iCount] ) Entonces
  144.                                 clienteSocket = clientesSocket[iCount]
  145.                                 Salir Contar
  146.                             FinSi
  147.                         Seguir
  148.  
  149.                         Si ( clienteSocket <> 0 ) Entonces
  150.                             Server.enviar(clienteSocket, "openCD|0")
  151.                         FinSi
  152.                     FinSi
  153.             FinSeleccionar
  154.     FinSeleccionar
  155. FinProc
  156.  
  157. Proc botonCerrarCDEventClic(hWnd:Entero,Botón:Byte,Presionado:Booleano,X,Y:Entero)
  158.     Seleccionar Botón
  159.         Caso BOTON_IZQUIERDO
  160.             Seleccionar Presionado
  161.                 Caso Falso
  162.                     Var seleccionado, iCount, clienteSocket:Entero
  163.                     Var seleccionadoTxt:Cadena
  164.                     seleccionado = listViewConectados.getItemSelected
  165.  
  166.                     Si ( seleccionado <> -1 ) Entonces
  167.                         seleccionadoTxt = listViewConectados.getItemText(seleccionado, 0)
  168.                         Contar iCount a &clientesName
  169.                             Si ( seleccionadoTxt = clientesName[iCount] ) Entonces
  170.                                 clienteSocket = clientesSocket[iCount]
  171.                                 Salir Contar
  172.                             FinSi
  173.                         Seguir
  174.  
  175.                         Si ( clienteSocket <> 0 ) Entonces
  176.                             Server.enviar(clienteSocket, "closeCD|0")
  177.                         FinSi
  178.                     FinSi
  179.             FinSeleccionar
  180.     FinSeleccionar
  181. FinProc
  182.  
  183. Proc ServerManager(info:Entero)
  184.     Var IDclient, idConnect:Entero
  185.     Var infoCad:Cadena
  186.     Var msg, arrayInfo[]:Cadena
  187.     infoCad = CadDePtr(info)
  188.     arrayInfo = Separar(infoCad, "|")
  189.     IDclient = CadEnt(arrayInfo[0])
  190.     idConnect = CadEnt(arrayInfo[1])
  191.     Repetir
  192.         msg = Server.recibir(IDclient)
  193.         Si ( (CadLong(msg) = 0) Or (msg = "") ) Entonces Salir Repetir
  194.         arrayInfo = Separar(msg, "|")
  195.         Seleccionar arrayInfo[0]
  196.             Caso "registro"
  197.                 registroCliente(idConnect, arrayInfo[1])
  198.             Caso "salir"
  199.                 Server.desconectar(IDclient)
  200.                 'Server.enviar(IDclient, "salir")
  201.                 Salir Repetir
  202.         FinSeleccionar
  203.         Pausar(500)
  204.     PorSiempre
  205.     clientesSocket[idConnect] = 0
  206.     Var i:Entero
  207.     i = 0
  208.     Contar i a listViewConectados.ItemsCount
  209.         Var itemComp:Cadena
  210.         itemComp = "ServerTest" + EntCad(idConnect)
  211.         Si ( listViewConectados.getItemText(i, 0) = itemComp ) Entonces
  212.             listViewConectados.eliminarItem(i)
  213.             Salir Contar
  214.         FinSi
  215.     Seguir
  216.     'ExitThread(0)
  217. FinProc
  218.  
  219. Proc registroCliente(id:Entero, txt:Cadena)
  220.     Var listItems:INFO_ITEM
  221.     Var info[]:Cadena
  222.     ReDim listItems.Texto, 5
  223.     info = Separar(txt, "=.=")
  224.     listItems.Texto[0] = info[0] + EntCad(id)
  225.     listItems.Texto[1] = info[1]
  226.     listItems.Texto[2] = info[2]
  227.     listItems.Texto[3] = info[3]
  228.     listItems.Texto[4] = info[4]
  229.     listItems.Indice   = id
  230.     clientesName[id] = listItems.Texto[0]
  231.     listViewConectados.insertarItem(listItems)
  232.     ReDim Preservar clientesName, (id+2)
  233. FinProc
  234.  
  235. Destruir botonCerrarCD
  236. Destruir botonAbrirCD
  237. Destruir listViewConectados
  238. Destruir frame
  239. Destruir Server


Código fuente del Cliente.cml


Archivo Cliente.cml
Código: Text
  1. '/**
  2. ' * Cliente del gestor de conexiones
  3. ' *
  4. ' * @author  Jovani Pérez Damián (@BlackBlex)
  5. ' *
  6. ' * ==============Information==============
  7. ' *      Filename: Cliente.cml
  8. ' * ---------------------------------------
  9. '*/
  10.  
  11. Importar "Cramel.cml"
  12. Importar "MSVBVM60\MSVBVM60.cml"
  13. Importar "Constantes.cml"
  14. Importar "APIS.cml"
  15. Importar "Socket.cml"
  16. Importar "Interfaz\Interfaz.cml"
  17. Importar "HTTPRequest.cml"
  18. Importar "Regedit.cml"
  19. Importar "Funciones.cml"
  20.  
  21. Var Cliente:SocketClient
  22. Var frame:CMLframe
  23. Var hilo, hiloID:Entero
  24.  
  25. Proc frameEventoCargar(hWnd:Entero)
  26.     Var info[]:Cadena
  27.     info = obtenerIPPais
  28.     Cliente.enviar("registro|ServerTest=.=" + info[0] + "=.=" + Usuario + "@" + UsuarioDominioSO + "=.=" + SO + "=.=" + info[1] + "@" + LenguajeSO)
  29. FinProc
  30.  
  31. Proc frameEventoTerminar(hWnd:Entero, Referencia Cancelar:Booleano)
  32.     Cliente.enviar("salir|0")
  33.     Cliente.detener
  34.     ExitProcess(0)
  35. FinProc
  36.  
  37. Crear Cliente
  38. Crear frame
  39.     Cliente.iniciar
  40.     Si (Cliente.conectar("127.0.0.1", 666) = SOCKET_ERROR) Entonces
  41.         Mensaje("Error al iniciar conectarse al servidor")
  42.         ExitProcess(0)
  43.     SiNo
  44.         hilo = CreateThread(Nulo, 0, [email protected], Nulo, 0, [email protected])
  45.  
  46.         frame.Texto = "Cliente en espera"
  47.         frame.PosX  = 10
  48.         frame.PosY  = 10
  49.         frame.Ancho = 100
  50.         frame.Alto  = 100
  51.         frame.Padre = 0
  52.         frame.construir(WS_OVERLAPPED+WS_CAPTION+WS_SYSMENU)
  53.  
  54.         frame.mostrar()
  55.         frame.correr()
  56.     FinSi
  57.  
  58. Proc ClienteManager
  59.     Var msg[],tempMsg:Cadena
  60.     Var command,empty:Cadena
  61.     Repetir
  62.         tempMsg = Cliente.recibir
  63.         Si ( (CadLong(tempMsg) = 0) Or (tempMsg = "") ) Entonces Salir Repetir
  64.         msg = Separar(tempMsg, "|")
  65.         Seleccionar msg[0]
  66.             Caso "Hola"
  67.                 Cliente.enviar("c")
  68.             Caso "openCD"
  69.                 command = "set CDAudio door open"
  70.                 mciSendString(StrPtr(command), StrPtr(empty), 127, 0)
  71.             Caso "closeCD"
  72.                 command = "set CDAudio door closed"
  73.                 mciSendString(StrPtr(command), StrPtr(empty), 127, 0)
  74.         FinSeleccionar
  75.         Pausar(500)
  76.     PorSiempre
  77. FinProc
  78.  
  79. Destruir frame
  80. Destruir Cliente

Archivo Funciones.cml
Código: Text
  1. '/**
  2. ' * Funciones
  3. ' *
  4. ' * @author  Jovani Pérez Damián (@BlackBlex)
  5. ' *
  6. ' * ==============Information==============
  7. ' *      Filename: Constantes.cml
  8. ' * ---------------------------------------
  9. '*/
  10.  
  11. Proc SO():Cadena
  12.     Var registro:Regedit
  13.     Crear registro
  14.     registro.hClave = HKEY_LOCAL_MACHINE
  15.     registro.sClave = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion"
  16.     registro.Clave  = "ProductName"
  17.     Resultado = registro.leerClaveCadena
  18.     Destruir registro    
  19. FinProc
  20.  
  21. Proc Usuario():Cadena
  22.     Var len:Entero
  23.     len = MAX_PATH
  24.     Resultado = Espacio(len)
  25.     GetUserName(StrPtr(Resultado), [email protected])
  26.     Resultado = TruncarCadena(Resultado)
  27. FinProc
  28.  
  29. Proc LenguajeSO():Cadena
  30.     Var registro:Regedit
  31.     Crear registro
  32.     registro.hClave = HKEY_CURRENT_USER
  33.     registro.sClave = "Control Panel\\International"
  34.     registro.Clave  = "LocaleName"
  35.     Resultado = registro.leerClaveCadena
  36.     Destruir registro    
  37. FinProc
  38.  
  39. Proc UsuarioDominioSO():Cadena
  40.     Var registro:Regedit
  41.     Crear registro
  42.     registro.hClave = HKEY_CURRENT_USER
  43.     registro.sClave = "Volatile Environment"
  44.     registro.Clave  = "USERDOMAIN"
  45.     Resultado = registro.leerClaveCadena
  46.     Destruir registro    
  47. FinProc
  48.  
  49. Proc UsuarioPathSO():Cadena
  50.     Var registro:Regedit
  51.     Crear registro
  52.     registro.hClave = HKEY_CURRENT_USER
  53.     registro.sClave = "Volatile Environment"
  54.     registro.Clave  = "USERPROFILE"
  55.     Resultado = registro.leerClaveCadena
  56.     Destruir registro    
  57. FinProc
  58.  
  59. Proc obtenerIPPais:Cadena[]
  60.     Var request:HTTP
  61.     Crear request
  62.         request.Metodo = "GET"
  63.         request.Puerto = INTERNET_DEFAULT_HTTP_PORT
  64.         request.Servidor = "aruljohn.com"
  65.         request.Dirección = "/details.php"
  66.         Var codigoFuente,partes[]:Cadena
  67.         ReDim Resultado, 2
  68.  
  69.         Si ( request.Conectar ) Entonces
  70.             Si ( request.Enviar ) Entonces
  71.                 Si ( request.StatusCode = HTTP_STATUS_OK ) Entonces
  72.                     codigoFuente = request.LeerRespuesta
  73.  
  74.                     'IP'
  75.                     partes = Separar(codigoFuente, "IP address</td><td>")
  76.                     partes[0] = partes[1]
  77.                     partes = Separar(partes[0], "</td></tr>")
  78.                     Resultado[0] = TruncarCadena(partes[0])
  79.                     'País'
  80.                     partes = Separar(codigoFuente, "Country</td><td valign=\"top\">")
  81.                     partes[0] = partes[1]
  82.                     partes = Separar(partes[0], "<img src=")
  83.                     Resultado[1] = TruncarCadena(partes[0])
  84.                 FinSi
  85.             FinSi
  86.         FinSi
  87.     Destruir request
  88. FinProc


Cualquier sugerencia, o error, comenten.

4
Otros lenguajes / [Cramel] Socket.cml ~ De la librería de Cramel
« en: Julio 05, 2017, 09:09:31 pm »
Les traigo este código el cual es solo una transcripción a Clase de la librería Socket que viene por defecto en Cramel

Información
  • Compatible con Cramel: 2.0.0.362


Tiene los siguientes métodos la clase SocketServer:
  • iniciar(Opcional Referencia Versión:Cadena = "2.2"):Booleano - Hace preparaciones para poder iniciar el servidor
  • escuchar(Puerto:Word, Opcional nConecciones:Entero = 255):Entero - Pone en escucha el servidor
  • aceptar(Opcional pProcThread:Entero):Entero - Acepta una conexión entrante
  • enviar(sockt:Entero, Referencia Datos:Cadena):Entero - Envia un dato a otra conexión
  • recibir(sockt:Entero, Opcional Tamaño:Entero = 1024):Cadena - Recibe un dato de otra conexión
  • detener
  • desconectar

Tiene los siguientes métodos la clase SocketClient:
  • iniciar(Opcional Referencia Versión:Cadena = "2.2"):Booleano - Hace preparaciones para poder iniciar el servidor
  • conectar(Referencia IP:Cadena, Puerto:Word):Entero - Se conecta a una dirección y puerto especifico
  • enviar(Referencia Datos:Cadena):Entero - Envía un dato
  • recibir(Opcional Tamaño:Entero = 1024):Cadena - Recibe un dato
  • detener
  • desconectar

Tiene las siguientes Propiedades:
  • IP - Devuelve la ip usada en la conexión
  • Puerto - Devuelve el puerto usado en la conexión
  • NumConexiones - Devuelve el numero máximo de conexiones permitidas
  • SocketPtr - Devuelve el puntero del socket

Para usarla solo es de Importar la librería Cramel, Socket y API (que viene por defecto en cramel); después declaramos una variable del tipo SocketServer o SocketClient y creamos el objecto.

Y es todo por el momento.

Aquí el código Socket.cml:
Código: Text
  1. '/**
  2. ' * Socket
  3. ' *
  4. ' * @author  Yuki
  5. ' *
  6. ' * ==============Information==============
  7. ' *      Filename: Socket.cml
  8. ' * ---------------------------------------
  9. '*/
  10.  
  11. Var TCP_Private_Init_Count:Byte
  12.  
  13. Clase SocketInfo,_
  14.     sIP:Cadena,_
  15.     sPuerto:Word,_
  16.     sConexiones:Entero,_
  17.     sVersión:Cadena,_
  18.     sSocket:Entero,_
  19.     @host:hostent,_
  20.     @ptr:Entero,_
  21.     i:Entero
  22.  
  23.     Sección Privada
  24.         Proc setSIP(nuevo:Cadena)
  25.             sIP = nuevo
  26.         FinProc
  27.         Proc getSIP:Cadena
  28.             Resultado = sIP
  29.         FinProc
  30.  
  31.         Proc setSPuerto(nuevo:Word)
  32.             sPuerto = nuevo
  33.         FinProc
  34.         Proc getSPuerto:Word
  35.             Resultado = sPuerto
  36.         FinProc
  37.  
  38.         Proc setSConexiones(nuevo:Entero)
  39.             sConexiones = nuevo
  40.         FinProc
  41.         Proc getSConexiones:Entero
  42.             Resultado = sConexiones
  43.         FinProc
  44.  
  45.         Proc setSVersión(nuevo:Cadena)
  46.             sVersión = nuevo
  47.         FinProc
  48.         Proc getSVersión:Cadena
  49.             Resultado = sVersión
  50.         FinProc
  51.  
  52.         Proc setSSocket(nuevo:Entero)
  53.             sSocket = nuevo
  54.         FinProc
  55.         Proc getSSocket:Entero
  56.             Resultado = sSocket
  57.         FinProc
  58.  
  59.     Sección Pública
  60.         Prop IP:Cadena
  61.             Lectura:getSIP
  62.             Escritura:setSIP
  63.         FinProp
  64.  
  65.         Prop Puerto:Word
  66.             Lectura:getSPuerto
  67.             Escritura:setSPuerto
  68.         FinProp
  69.  
  70.         Prop NumConexiones:Entero
  71.             Lectura:getSConexiones
  72.             Escritura:setSConexiones
  73.         FinProp
  74.  
  75.         Prop Versión:Cadena
  76.             Lectura:getSVersión
  77.             Escritura:setSVersión
  78.         FinProp
  79.  
  80.         Prop SocketPtr:Entero
  81.             Lectura:getSSocket
  82.             Escritura:setSSocket
  83.         FinProp
  84.  
  85.         Proc ObtenerIP(Referencia Dirección:Cadena):Entero[]
  86.             i = inet_addr(Dirección)
  87.             Si i <> SOCKET_ERROR Entonces
  88.                 ReDim Resultado,1
  89.                 Resultado[0] = i
  90.                 Salir
  91.             SiNo
  92.                 [email protected] = GetHostByName(dirección)
  93.                 ReDim Resultado,host.h_length
  94.                 i = 0
  95.                 Contar i a host.h_length - 1
  96.                     [email protected] = host.h_addr_list + (i * 4)
  97.                     Resultado[i] = ptr
  98.                 Seguir
  99.             FinSi
  100.         FinProc
  101.  
  102.         Proc ConvertirIP(direccion:Entero):Cadena
  103.             i = 0
  104.             Mientras i < 4
  105.                 Resultado = Resultado + EntCad(direccion And 255)
  106.                 Si (i < 3) Entonces Resultado = Resultado + "."
  107.                 direccion = direccion Shr 8
  108.                 i = i + 1
  109.             FinMientras
  110.         FinProc
  111.  
  112. FinClase
  113.  
  114. Clase SocketServer(SocketInfo),_
  115.     wData:WSADATA,_
  116.     Ver:Word,_
  117.     Info:SOCKADDR_IN,_
  118.     Addr:SOCKADDR_IN,_
  119.     Size:Entero
  120.    
  121.     Sección Pública
  122.         Proc iniciar(Opcional Referencia Versión:Cadena = "2.2"):Booleano
  123.             Si TCP_Private_Init_Count >= 1 Entonces Salir
  124.             Seleccionar Versión
  125.                 Caso "2.2"
  126.                     Ver = MakeWord(2,2)
  127.             FinSeleccionar
  128.             Resultado = (WSAStartup(Ver, wData) = OK)
  129.             Si Resultado Entonces
  130.                 TCP_Private_Init_Count = TCP_Private_Init_Count + 1
  131.                 setSVersión(Versión)
  132.             FinSi
  133.         FinProc
  134.  
  135.         Proc escuchar(Puerto:Word, Opcional nConecciones:Entero = 255):Entero
  136.             Resultado = socket(AF_INET,SOCK_STREAM,0)
  137.             Si Resultado = INVALID_SOCKET Entonces Devolver 0
  138.             Info.sin_family = AF_INET
  139.             Info.sin_addr.s_addr = INADDR_ANY
  140.             Info.sin_port = htons(Puerto)
  141.             Si bind(Resultado, Info, &SOCKADDR_IN) = SOCKET_ERROR Entonces
  142.                 closesocket(Resultado)
  143.                 Devolver -1
  144.             FinSi
  145.             Si listen(Resultado, nConecciones) = SOCKET_ERROR Entonces
  146.                 closesocket(Resultado)
  147.                 Devolver -1
  148.             FinSi
  149.             setSPuerto(Puerto)
  150.             setSConexiones(nConecciones)
  151.             setSSocket(Resultado)
  152.         FinProc
  153.  
  154.         Proc aceptar(Opcional pProcThread:Entero):Entero
  155.             Si getSSocket = INVALID_SOCKET Entonces Salir
  156.             Resultado = accept(getSSocket, Addr, &SOCKADDR_IN)
  157.             Si Resultado = INVALID_SOCKET Entonces Devolver 0
  158.             Si pProcThread Entonces Resultado = CreateThread(0,0,pProcThread,Resultado,0,0)
  159.         FinProc
  160.  
  161.         Proc enviar(sockt:Entero, Referencia Datos:Cadena):Entero
  162.             Si sockt = INVALID_SOCKET Entonces Salir
  163.             Resultado = send(sockt, [email protected]@, CadLong(Datos), 0)
  164.         FinProc
  165.  
  166.         Proc recibir(sockt:Entero, Opcional Tamaño:Entero = 1024):Cadena
  167.             Si sockt = INVALID_SOCKET Entonces Devolver ""
  168.             Resultado = Espacio(Tamaño)
  169.             Size = recv(sockt, [email protected]@, Tamaño,0)
  170.             Si Size <> 0 Entonces
  171.                 Resultado = Parte(Resultado,1,Size)
  172.             SiNo
  173.                 Resultado = ""
  174.             FinSi
  175.         FinProc
  176.  
  177.         Proc detener
  178.             Si TCP_Private_Init_Count >= 1 Entonces TCP_Private_Init_Count = TCP_Private_Init_Count - 1
  179.             WSACleanup
  180.         FinProc
  181.  
  182.         Proc desconectar(sockt:Entero)
  183.             closesocket(sockt)
  184.         FinProc
  185.  
  186. FinClase
  187.  
  188. Clase SocketClient(SocketInfo),_
  189.     wData:WSADATA,_
  190.     Ver:Word,_
  191.     Cliente:SOCKADDR_IN,_
  192.     IPs[]:Entero,_
  193.     i:Entero,_
  194.     Size:Entero
  195.    
  196.     Sección Pública
  197.         Proc iniciar(Opcional Referencia Versión:Cadena = "2.2"):Booleano
  198.             Si TCP_Private_Init_Count >= 1 Entonces Salir
  199.             Seleccionar Versión
  200.                 Caso "2.2"
  201.                     Ver = MakeWord(2,2)
  202.             FinSeleccionar
  203.             Resultado = (WSAStartup(Ver,wData) = OK)
  204.             Si Resultado Entonces
  205.                 TCP_Private_Init_Count = TCP_Private_Init_Count + 1
  206.                 setSVersión(Versión)
  207.             FinSi
  208.         FinProc
  209.  
  210.         Proc conectar(Referencia IP:Cadena, Puerto:Word):Entero
  211.             Resultado = socket(AF_INET,SOCK_STREAM,0)
  212.             Si Resultado = INVALID_SOCKET Entonces Devolver 0
  213.             Cliente.sin_family = AF_INET
  214.             Cliente.sin_port = htons(Puerto)
  215.             IPs = ObtenerIP(IP)
  216.             Contar i a (&IPs - 1)
  217.                 Cliente.sin_addr.s_addr = IPs[i]
  218.                 Si connect(Resultado, Cliente, &SOCKADDR_IN) = OK Entonces
  219.                     setSPuerto(Puerto)
  220.                     setSIP(IP)
  221.                     setSSocket(Resultado)
  222.                     Salir
  223.                 FinSi
  224.             Seguir
  225.             closesocket(Resultado)
  226.             Resultado = -1
  227.         FinProc
  228.  
  229.         Proc enviar(Referencia Datos:Cadena):Entero
  230.             Si getSSocket = INVALID_SOCKET Entonces Salir
  231.             Resultado = send(getSSocket, [email protected]@, CadLong(Datos), 0)
  232.         FinProc
  233.  
  234.         Proc recibir(Opcional Tamaño:Entero = 1024):Cadena
  235.             Si getSSocket = INVALID_SOCKET Entonces Devolver ""
  236.             Resultado = Espacio(Tamaño)
  237.             Size = recv(getSSocket,[email protected]@,Tamaño,0)
  238.             Si Size <> 0 Entonces
  239.                 Resultado = Parte(Resultado,1,Size)
  240.             SiNo
  241.                 Resultado = ""
  242.             FinSi
  243.         FinProc
  244.  
  245.         Proc detener
  246.             Si TCP_Private_Init_Count >= 1 Entonces TCP_Private_Init_Count = TCP_Private_Init_Count - 1
  247.             WSACleanup
  248.         FinProc
  249.  
  250.         Proc desconectar
  251.             closesocket(getSSocket)
  252.         FinProc
  253.  
  254. FinClase

Cualquier sugerencia, o error, comenten.

5
Les traigo este código el cual te facilita la creación, edición o eliminación de claves del Registro

Información
  • Compatible con Cramel: 2.0.0.362
  • Librerías requeridas: MSVBVM60.cml


Tiene los siguientes métodos:
  • crearClaveCadena:Booleano - Crea un valor cadena, o una clave con su valor cadena
  • crearClaveWord:Booleano - Crea un valor Dword, o una subclave con su valor Dword
  • establecerClaveCadena:Booleano - Establece el valor cadena de una clave existente, sino crea el valor
  • establecerClaveWord:Booleano - Establece el valor word de una clave existente, sino crea el valor
  • leerClaveCadena:Cadena - Devuelve el valor cadena de una clave
  • leerClaveWord:Word - Devuelve el valor word de una clave
  • borrarValor:Booleano - Borra un valor de una clave
  • borrarClave:Booleano - Borra una clave

Tiene las siguientes Propiedades:
  • hClave - Establece la HKEY que se usara | HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_PERFORMANCE_DATA, HKEY_PERFORMANCE_TEXT, HKEY_PERFORMANCE_NLSTEXT, HKEY_CURRENT_CONFIG o HKEY_DYN_DATA
  • sClave - Establece la SubKEY que se usara
  • Clave - Establece la clave o el valor que se recuperará, creará o borrará
  • ValorCadena - Establece el contenido del valor
  • ValorWord - Establece el contenido del valor

Para usarla solo es de Importar la librería Cramel, Regedit, su archivo de constantes y apis propia; después declaramos una variable del tipo Regedit y creamos el objecto.

Y es todo por el momento.

Aquí el código Regedit.cml:
Código: Text
  1. '/**
  2. ' * Regedit
  3. ' *
  4. ' * @author  Jovani Pérez Damián (@BlackBlex)
  5. ' *
  6. ' * ==============Information==============
  7. ' *      Filename: Regedit.cml
  8. ' * ---------------------------------------
  9. '*/
  10.  
  11. Clase Regedit,_
  12.     rhKey:Entero,_
  13.     rsKey,_
  14.     rKey,_
  15.     rValueC:Cadena,_
  16.     rType,_
  17.     rSize,_
  18.     rNorU,_
  19.     rPtr:Entero,_
  20.     rValueW:Word,_
  21.     rStrucSA:SECURITY_ATTRIBUTES
  22.  
  23.     Sección Privada
  24.         Proc setrhKey(nuevo:Entero)
  25.             rhKey = nuevo
  26.         FinProc
  27.         Proc getrhKey:Entero
  28.             Resultado = rhKey
  29.         FinProc
  30.  
  31.         Proc setrsKey(nuevo:Cadena)
  32.             rsKey = nuevo
  33.         FinProc
  34.         Proc getrsKey:Cadena
  35.             Resultado = rsKey
  36.         FinProc
  37.  
  38.         Proc setrKey(nuevo:Cadena)
  39.             rKey = nuevo
  40.         FinProc
  41.         Proc getrKey:Cadena
  42.             Resultado = rKey
  43.         FinProc
  44.  
  45.         Proc setrSize(nuevo:Entero)
  46.             rSize = nuevo
  47.         FinProc
  48.         Proc getrSize:Entero
  49.             Resultado = rSize
  50.         FinProc
  51.  
  52.         Proc setrPtr(nuevo:Entero)
  53.             rPtr = nuevo
  54.         FinProc
  55.         Proc getrPtr:Entero
  56.             Resultado = rPtr
  57.         FinProc
  58.  
  59.         Proc setrValueC(nuevo:Cadena)
  60.             rValueC = nuevo
  61.         FinProc
  62.         Proc getrValueC:Cadena
  63.             Resultado = rValueC
  64.         FinProc
  65.  
  66.         Proc setrValueW(nuevo:Word)
  67.             rValueW = nuevo
  68.         FinProc
  69.         Proc getrValueW:Word
  70.             Resultado = rValueW
  71.         FinProc
  72.  
  73.     Sección Pública
  74.         Prop hClave:Entero
  75.             Lectura:getrhKey
  76.             Escritura:setrhKey
  77.         FinProp
  78.        
  79.         Prop sClave:Cadena
  80.             Lectura:getrsKey
  81.             Escritura:setrsKey
  82.         FinProp
  83.        
  84.         Prop Clave:Cadena
  85.             Lectura:getrKey
  86.             Escritura:setrKey
  87.         FinProp
  88.        
  89.         Prop Tamaño:Entero
  90.             Lectura:getrSize
  91.             Escritura:setrSize
  92.         FinProp
  93.        
  94.         Prop Puntero:Entero
  95.             Lectura:getrPtr
  96.             Escritura:setrPtr
  97.         FinProp
  98.        
  99.         Prop ValorCadena:Cadena
  100.             Lectura:getrValueC
  101.             Escritura:setrValueC
  102.         FinProp
  103.        
  104.         Prop ValorWord:Word
  105.             Lectura:getrValueW
  106.             Escritura:setrValueW
  107.         FinProp
  108.  
  109.         Proc crearClaveCadena:Booleano
  110.             Resultado = Falso
  111.  
  112.             rStrucSA.lpSecurityDescriptor = 0
  113.             rStrucSA.bInheritHandle = 1
  114.             rStrucSA.nLength = &rStrucSA
  115.            
  116.             Si (RegCreateKey(EsteObjeto.hClave, EsteObjeto.sClave, 0, "", 0, KEY_WRITE, [email protected], [email protected], [email protected]) = ERROR_SUCCESS) Entonces
  117.                 rSize = CadLong(rValueC)
  118.                 Si ( RegSetValue(EsteObjeto.Puntero, EsteObjeto.Clave, 0, REG_SZ, StrPtr(rValueC), rSize) = ERROR_SUCCESS ) Entonces
  119.                     Resultado = Verdad
  120.                 FinSi
  121.             FinSi
  122.             RegCloseKey(EsteObjeto.Puntero)
  123.         FinProc
  124.  
  125.         Proc crearClaveWord:Booleano
  126.             Resultado = Falso
  127.  
  128.             rStrucSA.lpSecurityDescriptor = 0
  129.             rStrucSA.bInheritHandle = 1
  130.             rStrucSA.nLength = &rStrucSA
  131.            
  132.             Si (RegCreateKey(EsteObjeto.hClave, EsteObjeto.sClave, 0, "", 0, KEY_WRITE, [email protected], [email protected], [email protected]) = ERROR_SUCCESS) Entonces
  133.                 rSize = &rValueW
  134.                 rSize = rSize * 2
  135.                 Si ( RegSetValue(EsteObjeto.Puntero, EsteObjeto.Clave, 0, REG_DWORD, [email protected], rSize) = ERROR_SUCCESS ) Entonces
  136.                     Resultado = Verdad
  137.                 FinSi
  138.             FinSi
  139.             RegCloseKey(EsteObjeto.Puntero)
  140.         FinProc
  141.  
  142.         Proc establecerClaveCadena:Booleano
  143.             Resultado = Falso            
  144.             Si (RegOpenKey(EsteObjeto.hClave, EsteObjeto.sClave, 0, KEY_WRITE, [email protected]) = ERROR_SUCCESS) Entonces
  145.                 rSize = CadLong(rValueC)
  146.                 Si ( RegSetValue(EsteObjeto.Puntero, EsteObjeto.Clave, 0, REG_SZ, StrPtr(rValueC), rSize) = ERROR_SUCCESS ) Entonces
  147.                     Resultado = Verdad
  148.                 FinSi
  149.             FinSi
  150.             RegCloseKey(EsteObjeto.Puntero)
  151.         FinProc
  152.  
  153.         Proc establecerClaveWord:Booleano
  154.             Resultado = Falso            
  155.             Si (RegOpenKey(EsteObjeto.hClave, EsteObjeto.sClave, 0, KEY_WRITE, [email protected]) = ERROR_SUCCESS) Entonces
  156.                 rSize = &rValueW
  157.                 rSize = rSize * 2
  158.                 Si ( RegSetValue(EsteObjeto.Puntero, EsteObjeto.Clave, 0, REG_DWORD, [email protected], rSize) = ERROR_SUCCESS ) Entonces
  159.                     Resultado = Verdad
  160.                 FinSi
  161.             FinSi
  162.             RegCloseKey(EsteObjeto.Puntero)
  163.         FinProc
  164.  
  165.         Proc leerClaveCadena:Cadena
  166.             Resultado = "Desconocido"
  167.             Si (RegOpenKey(EsteObjeto.hClave, EsteObjeto.sClave, 0, KEY_QUERY_VALUE, [email protected]) = ERROR_SUCCESS) Entonces
  168.                 rType = REG_SZ
  169.                 RegQueryValue(EsteObjeto.Puntero, EsteObjeto.Clave, 0, [email protected], Nulo, [email protected])
  170.                 Resultado = Espacio(EsteObjeto.Tamaño)
  171.                 RegQueryValue(EsteObjeto.Puntero, EsteObjeto.Clave, 0, [email protected], StrPtr(Resultado), [email protected])
  172.                 Resultado = TruncarCadena(Resultado)
  173.             FinSi
  174.             RegCloseKey(EsteObjeto.Puntero)
  175.         FinProc
  176.  
  177.         Proc leerClaveWord:Word
  178.             Resultado = -1
  179.             Si (RegOpenKey(EsteObjeto.hClave, EsteObjeto.sClave, 0, KEY_QUERY_VALUE, [email protected]) = ERROR_SUCCESS) Entonces
  180.                 rType = REG_DWORD
  181.                 RegQueryValue(EsteObjeto.Puntero, EsteObjeto.Clave, 0, [email protected], Nulo, [email protected])
  182.                 RegQueryValue(EsteObjeto.Puntero, EsteObjeto.Clave, 0, [email protected], [email protected], [email protected])
  183.             FinSi
  184.             RegCloseKey(EsteObjeto.Puntero)
  185.         FinProc
  186.  
  187.         Proc borrarValor:Booleano
  188.             Resultado = Falso
  189.             Si (RegOpenKey(EsteObjeto.hClave, EsteObjeto.sClave, 0, KEY_SET_VALUE, [email protected]) = ERROR_SUCCESS) Entonces
  190.                 Si ( RegDeleteValue(EsteObjeto.Puntero, EsteObjeto.Clave) = ERROR_SUCCESS ) Entonces
  191.                     Resultado = Verdad
  192.                 FinSi
  193.             FinSi
  194.             RegCloseKey(EsteObjeto.Puntero)
  195.         FinProc
  196.  
  197.         Proc borrarClave:Booleano
  198.             Resultado = Falso
  199.             Si (RegOpenKey(EsteObjeto.hClave, EsteObjeto.sClave, 0, KEY_SET_VALUE, [email protected]) = ERROR_SUCCESS) Entonces
  200.                 Si (RegDeleteKey(EsteObjeto.Puntero, "") = ERROR_SUCCESS) Entonces
  201.                     Resultado = Verdad
  202.                 FinSi
  203.             FinSi
  204.             RegCloseKey(EsteObjeto.Puntero)
  205.         FinProc
  206.  
  207. FinClase
  208.  
  209. Proc WordCad(Valor:Word, Opcional Base:Entero = 16):Cadena
  210.     Resultado = TruncarCadena(itoa(Valor,Espacio(10),Base))
  211. FinProc

Archivo Constantes.cml <- Se recomienda que tengan un archivo propio de constantes (y que sea global), donde puedan poner todas las constantes que no contenta Cramel por defecto.
Código: Text
  1. '/**
  2. ' * Constantes para el Regedit
  3. ' *
  4. ' * @author  Jovani Pérez Damián (@BlackBlex)
  5. ' *
  6. ' * ==============Information==============
  7. ' *      Filename: Constantes.cml
  8. ' * ---------------------------------------
  9. '*/
  10.  
  11. 'Constantes Regedit'
  12.     'Registro'
  13.         Const HKEY_CLASSES_ROOT        = &80000000
  14.         Const HKEY_CURRENT_USER        = &80000001
  15.         Const HKEY_LOCAL_MACHINE       = &80000002
  16.         Const HKEY_USERS               = &80000003
  17.         Const HKEY_PERFORMANCE_DATA    = &80000004
  18.         Const HKEY_PERFORMANCE_TEXT    = &80000050
  19.         Const HKEY_PERFORMANCE_NLSTEXT = &80000060
  20.         Const HKEY_CURRENT_CONFIG      = &80000005
  21.         Const HKEY_DYN_DATA            = &80000006
  22.     'Registro'
  23.  
  24.     'Desired Access'
  25.         Const KEY_ALL_ACCESS         = &F003F
  26.         Const KEY_CREATE_LINK        = &0020
  27.         Const KEY_CREATE_SUB_KEY     = &0004
  28.         Const KEY_ENUMERATE_SUB_KEYS = &0008
  29.         Const KEY_EXECUTE            = &20019
  30.         Const KEY_NOTIFY             = &0010
  31.         Const KEY_QUERY_VALUE        = &0001
  32.         Const KEY_READ               = &20019
  33.         Const KEY_SET_VALUE          = &0002
  34.         Const KEY_WOW64_32KEY        = &0200
  35.         Const KEY_WOW64_64KEY        = &0100
  36.         Const KEY_WRITE              = &20006
  37.     'Desired Access'
  38.  
  39.     'Registry Value Type'
  40.         Const REG_NONE                       = 0
  41.         Const REG_SZ                         = 1
  42.         Const REG_EXPAND_SZ                  = 2
  43.         Const REG_BINARY                     = 3
  44.         Const REG_DWORD                      = 4
  45.         Const REG_DWORD_LITTLE_ENDIAN        = 4
  46.         Const REG_DWORD_BIG_ENDIAN           = 5
  47.         Const REG_LINK                       = 6
  48.         Const REG_MULTI_SZ                   = 7
  49.         Const REG_RESOURCE_LIST              = 8
  50.         Const REG_FULL_RESOURCE_DESCRIPTOR   = 9
  51.         Const REG_RESOURCE_REQUIREMENTS_LIST = 10
  52.         Const REG_QWORD                      = 11
  53.         Const REG_QWORD_LITTLE_ENDIAN        = 11
  54.     'Registry Value Type'
  55.  
  56.     'Error message'
  57.         Const ERROR_SUCCESS = &0
  58.     'Error message'
  59. 'Constantes Regedit'

Archivo APIS.cml <- Se recomienda que tengan un archivo propio de APIS (y que sea global), donde puedan poner todas las APIS que no contenta Cramel por defecto.
Código: Text
  1. '/**
  2. ' * APIS para el Editor de Registro
  3. ' *
  4. ' * @author  Jovani Pérez Damián (@BlackBlex)
  5. ' *
  6. ' * ==============Information==============
  7. ' *      Filename: APIS.cml
  8. ' * ---------------------------------------
  9. '*/
  10.  
  11. 'APIS Regedit'
  12.     API RegOpenKey(hKey:Entero, lpSubKey:Cadena, ulOptions, samDesired, phkResult:Entero):Entero, "Advapi32.dll" "RegOpenKeyExA"
  13.     API RegQueryValue(hKey:Entero, lpValueName:Cadena, lpReserved, lpType, lpData, lpcbData:Entero):Entero, "Advapi32.dll" "RegQueryValueExA"
  14.     API RegCloseKey(hKey:Entero):Entero, "Advapi32.dll"
  15.     API RegCreateKey(hKey:Entero, lpSubKey:Cadena, lpReserved:Entero, lpClass:Cadena, dwOptions:Entero, samDesired:Entero, lpSecurityAttributes:Entero, phkResult, lpdwDisposition:Entero):Entero, "Advapi32.dll" "RegCreateKeyExA"
  16.     API RegDeleteKey(hKey:Entero, lpSubKey:Cadena):Entero, "Advapi32.dll" "RegDeleteKeyA"
  17.     API RegSetValue(hKey:Entero, lpValueName:Cadena, lpReserved, lpType, lpData, cbData:Entero):Entero, "Advapi32.dll" "RegSetValueExA"
  18.     API RegDeleteValue(hKey:Entero, lpValueName:Cadena):Entero, "Advapi32.dll" "RegDeleteValueA"
  19. 'APIS Regedit'

Y aquí un ejemplo usando Regedit.cml
Código: Text
  1. Importar "Cramel.cml"
  2. Importar "MSVBVM60\MSVBVM60.cml"
  3. Importar "Constantes.cml"
  4. Importar "APIS.cml"
  5. Importar "Regedit.cml"
  6.  
  7. Var registro:Regedit
  8.  
  9. Crear registro
  10.  
  11.     'Creamos la subclave HelloCramel con una clave Test con valor "Prueba"'
  12.     registro.hClave = HKEY_CURRENT_USER
  13.     registro.sClave = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\HelloCramel"
  14.     registro.Clave  = "Test"
  15.     registro.ValorCadena = "Prueba"
  16.  
  17.     Si ( registro.crearClaveCadena ) Entonces
  18.         Mensaje("Correcto")
  19.     SiNo
  20.         Mensaje("Error")
  21.     FinSi
  22.  
  23.     'Establecemos la clave HelloCramel'
  24.     registro.hClave = HKEY_CURRENT_USER
  25.     registro.sClave = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"
  26.     registro.Clave  = "HelloCramel"
  27.     registro.ValorCadena = "Estamos aquí"
  28.  
  29.     Si ( registro.crearClaveCadena ) Entonces
  30.         Mensaje("Correcto")
  31.     SiNo
  32.         Mensaje("Error")
  33.     FinSi
  34.    
  35.     'SO'
  36.     registro.hClave = HKEY_LOCAL_MACHINE
  37.     registro.sClave = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion"
  38.     registro.Clave  = "ProductName"
  39.     Mensaje(registro.leerClaveCadena)
  40.    
  41.     'Lang'
  42.     registro.hClave = HKEY_CURRENT_USER
  43.     registro.sClave = "Control Panel\\International"
  44.     registro.Clave  = "LocaleName"
  45.     Mensaje(registro.leerClaveCadena)
  46.    
  47.     'User path'
  48.     registro.hClave = HKEY_CURRENT_USER
  49.     registro.sClave = "Volatile Environment"
  50.     registro.Clave  = "USERPROFILE"
  51.     Mensaje(registro.leerClaveCadena)
  52.    
  53.     'Random Key value DWord'
  54.     registro.hClave = HKEY_LOCAL_MACHINE
  55.     registro.sClave = "SOFTWARE\\Microsoft\\Windows\\ScriptedDiagnosticsProvider"
  56.     registro.Clave  = "RemoteServerResponseId"
  57.     Mensaje(WordCad(registro.leerClaveWord, 16))
  58.  
  59.     'Borramos el valor HelloCramel'
  60.     registro.hClave = HKEY_CURRENT_USER
  61.     registro.sClave = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"
  62.     registro.Clave  = "HelloCramel"
  63.  
  64.     Si ( registro.borrarValor ) Entonces
  65.         Mensaje("Correcto")
  66.     SiNo
  67.         Mensaje("Error")
  68.     FinSi
  69.  
  70.     'Borramos la subclave HelloCramel'
  71.     registro.hClave = HKEY_CURRENT_USER
  72.     registro.sClave = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\HelloCramel"
  73.  
  74.     Si ( registro.borrarClave ) Entonces
  75.         Mensaje("Correcto")
  76.     SiNo
  77.         Mensaje("Error")
  78.     FinSi
  79.  
  80.     'Establecemos una clave String'
  81.     registro.hClave = HKEY_CURRENT_USER
  82.     registro.sClave = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"
  83.     registro.Clave  = "HelloCramelC"
  84.     registro.ValorCadena = "\"C:\test.exe\""
  85.  
  86.     Si ( registro.crearClaveCadena ) Entonces
  87.         Mensaje("Correcto")
  88.     SiNo
  89.         Mensaje("Error")
  90.     FinSi
  91.  
  92.     'Establecemos una clave DWord'
  93.     registro.hClave = HKEY_CURRENT_USER
  94.     registro.sClave = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"
  95.     registro.Clave  = "HelloCramelW"
  96.     registro.ValorWord = &c0a
  97.  
  98.     Si ( registro.crearClaveWord ) Entonces
  99.         Mensaje("Correcto")
  100.     SiNo
  101.         Mensaje("Error")
  102.     FinSi
  103.  
  104.     'Cambiamos el valor de HelloCramelW'
  105.     registro.hClave = HKEY_CURRENT_USER
  106.     registro.sClave = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"
  107.     registro.Clave  = "HelloCramelW"
  108.     registro.ValorWord = &fffc
  109.  
  110.     Si ( registro.establecerClaveWord ) Entonces
  111.         Mensaje("Correcto")
  112.     SiNo
  113.         Mensaje("Error")
  114.     FinSi
  115.  
  116. Destruir registro


De arriba hacia abajo, de izquierda a derecha.

Cualquier sugerencia, o error, comenten.

6
Wargames y retos / Re:Reto - Descubre el valor oculto
« en: Julio 03, 2017, 01:39:52 pm »
Se que esta muy pegado al acertijo y no es dinámico, pero es la única forma donde encontré como resolverlo sin meterme en muchos líos.  ;D

Amo los juegos del Profesor Layton

Cramel:
Código: Text
  1. Var cmd:Consola
  2.  
  3.     Crear cmd
  4.     Var a, b, c, d:Entero
  5.     Const fijo = 4
  6.     Var i, j:Entero
  7.  
  8.     i = 1
  9.     j = 1
  10.  
  11.     Repetir
  12.         a = i
  13.         cmd.escribirLinea("a tomo el valor de: " + EntCad(a))
  14.         d = a * fijo
  15.         cmd.escribirLinea("d tomo el valor de: " + EntCad(d))
  16.         Repetir
  17.             c = j
  18.             cmd.escribirLinea("c tomo el valor de: " + EntCad(c))
  19.             Si ( (a+c) = d ) Entonces
  20.                 Salir Repetir
  21.             FinSi
  22.             j = j + 1
  23.         MientrasQue j <= d
  24.         b = (c/2)
  25.         cmd.escribirLinea("b tomo el valor de: " + EntCad(b))
  26.  
  27.         Si ( ((a*b) = c) And ((c-b) = b) ) Entonces
  28.             Salir Repetir
  29.         FinSi
  30.  
  31.         cmd.escribirLinea("De nuevo" + CRLF)
  32.         i = i + 1
  33.     MientrasQue i <= 9
  34.    
  35.     cmd.establecerTitulo("Resultado final")
  36.     cmd.escribirLinea("")
  37.     cmd.escribirLinea("a: " + EntCad(a) + CRLF + "b: " + EntCad(b) + CRLF + "c: " + EntCad(c) + CRLF + "d: " + EntCad(d))
  38.     cmd.pausarConsola()
  39. Destruir cmd

7
Les traigo el siguiente Port de una aplicación echa por @79137913 en el post de Crea tu propio Creador de Diccionarios por Fuerza Bruta en VBNet en solo 3 Pasos



Descarga: Mega


Para hacer funcionar la aplicación solo necesitas ejecutar el archivo Dictionary.exe



Código fuente

Información

Aquí les traigo el source del Brute Force Dictionary Creator, como verán usa el mismo algoritmo para la generación del diccionario

Archivo Dictionary.cml
Código: Text
  1. '/**
  2. ' * Brute Force Dictionary
  3. ' *
  4. ' * @by         @79137913
  5. ' * @Ported by  Jovani Pérez Damián (@BlackBlex)
  6. ' *
  7. ' * ==============Information==============
  8. ' *      Filename: Dictionary.cml
  9. ' * ---------------------------------------
  10. '*/
  11. Importar "Cramel.cml"
  12. Importar "MSVBVM60\MSVBVM60.cml"
  13. Importar "Constantes.cml"
  14. Importar "Interfaz\Interfaz.cml"
  15. Importar "Archivo.cml"
  16.  
  17. Var frame:CMLframe
  18. Var checkNum, checkMin, checkEspMin, checkSim, checkMay, checkEspMay, checkAdd:CMLCheckbox
  19. Var cajaAdd, cajaDe, cajaHas:CMLCajatexto
  20. Var etiquetaGen, etiquetaHas, etiquetaCar:CMLEtiqueta
  21. Var botonGenerar:CMLBotón
  22. Var grupoLetras:CMLGroupbox
  23. Var diccionarioArchivo:ArchivoC
  24.  
  25. Const Sym = "/\!·$%&/()='""¡¿?<>., :;-_*+" 'Simbolos
  26. Const Num = "0123456789"                   'Numeros
  27. Const Min = "abcdefghijklmnopqrstuvwxyz"   'Letras Minusculas
  28. Const May = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"   'Letras Mayusculas
  29. Const SpL = "áéíóúàèìòùâêîôûäëïöüçñ"       'Letras Especiales Minusculas
  30. Const SpU = "ÁÉÍÓÚÀÈÌÒÙÂÊÎÔÛÄËÏÖÜÇÑ"       'Letras Especiales Mayusculas
  31.  
  32. Crear frame
  33. Crear checkNum
  34. Crear checkMin
  35. Crear checkEspMin
  36. Crear checkSim
  37. Crear checkMay
  38. Crear checkEspMay
  39. Crear checkAdd
  40. Crear cajaAdd
  41. Crear cajaDe
  42. Crear cajaHas
  43. Crear etiquetaGen
  44. Crear etiquetaHas
  45. Crear etiquetaCar
  46. Crear botonGenerar
  47. Crear grupoLetras
  48. Crear diccionarioArchivo
  49.  
  50.     frame.Texto = "Brute Force Dictionary Creator .Net by 79137913"
  51.     frame.Ancho = 410
  52.     frame.Alto = 250
  53.     frame.Padre = 0
  54.     frame.Centrar = 1
  55.     frame.construir(WS_OVERLAPPED+WS_CAPTION+WS_SYSMENU)
  56.  
  57.     grupoLetras.Texto = "Elige las letras que contendra el diccionario"
  58.     grupoLetras.PosX  = 10
  59.     grupoLetras.PosY  = 10
  60.     grupoLetras.Ancho = frame.Ancho - 30
  61.     grupoLetras.Alto  = (frame.Alto/2) + 10
  62.     grupoLetras.Padre = frame.hWnd
  63.     grupoLetras.fuente.Nombre = "Arial"
  64.     grupoLetras.fuente.Tamaño = 11
  65.     grupoLetras.construir()
  66.  
  67.         checkNum.Texto = "Numeros"
  68.         checkNum.PosX  = 20
  69.         checkNum.PosY  = 35
  70.         checkNum.Ancho = 80
  71.         checkNum.Alto  = 20
  72.         checkNum.Padre = frame.hWnd
  73.         checkNum.fuente.Nombre = "Arial"
  74.         checkNum.fuente.Tamaño = 11
  75.         checkNum.construir()
  76.  
  77.         checkMin.Texto = "Minusculas"
  78.         checkMin.PosX  = 10 + (checkNum.Ancho + checkNum.PosX)
  79.         checkMin.PosY  = checkNum.PosY
  80.         checkMin.Ancho = 90
  81.         checkMin.Alto  = 20
  82.         checkMin.Padre = frame.hWnd
  83.         checkMin.fuente.Nombre = "Arial"
  84.         checkMin.fuente.Tamaño = 11
  85.         checkMin.construir()
  86.  
  87.         checkEspMin.Texto = "Especiales Minusculas"
  88.         checkEspMin.PosX  = 10 + (checkMin.Ancho + checkMin.PosX)
  89.         checkEspMin.PosY  = checkMin.PosY
  90.         checkEspMin.Ancho = 170
  91.         checkEspMin.Alto  = 20
  92.         checkEspMin.Padre = frame.hWnd
  93.         checkEspMin.fuente.Nombre = "Arial"
  94.         checkEspMin.fuente.Tamaño = 11
  95.         checkEspMin.construir()
  96.  
  97.         checkSim.Texto = "Simbolos"
  98.         checkSim.PosX  = 20
  99.         checkSim.PosY  = 5 + (checkNum.Alto + checkNum.PosY)
  100.         checkSim.Ancho = 80
  101.         checkSim.Alto  = 20
  102.         checkSim.Padre = frame.hWnd
  103.         checkSim.fuente.Nombre = "Arial"
  104.         checkSim.fuente.Tamaño = 11
  105.         checkSim.construir()
  106.  
  107.         checkMay.Texto = "Mayusculas"
  108.         checkMay.PosX  = 10 + (checkSim.Ancho + checkSim.PosX)
  109.         checkMay.PosY  = checkSim.PosY
  110.         checkMay.Ancho = 95
  111.         checkMay.Alto  = 20
  112.         checkMay.Padre = frame.hWnd
  113.         checkMay.fuente.Nombre = "Arial"
  114.         checkMay.fuente.Tamaño = 11
  115.         checkMay.construir()
  116.  
  117.         checkEspMay.Texto = "Especiales Mayusculas"
  118.         checkEspMay.PosX  = 5 + (checkMay.Ancho + checkMay.PosX)
  119.         checkEspMay.PosY  = checkMay.PosY
  120.         checkEspMay.Ancho = 170
  121.         checkEspMay.Alto  = 20
  122.         checkEspMay.Padre = frame.hWnd
  123.         checkEspMay.fuente.Nombre = "Arial"
  124.         checkEspMay.fuente.Tamaño = 11
  125.         checkEspMay.construir()
  126.  
  127.         checkAdd.Texto = "Agregar los siguientes caracteres"
  128.         checkAdd.PosX  = 20
  129.         checkAdd.PosY  = 5 + (checkSim.Alto + checkSim.PosY)
  130.         checkAdd.Ancho = frame.Ancho - 60
  131.         checkAdd.Alto  = 20
  132.         checkAdd.Padre = frame.hWnd
  133.         checkAdd.fuente.Nombre = "Arial"
  134.         checkAdd.fuente.Tamaño = 11
  135.         checkAdd.construir()
  136.  
  137.         cajaAdd.PosX  = 20
  138.         cajaAdd.PosY  = 5 + (checkAdd.Alto + checkAdd.PosY)
  139.         cajaAdd.Ancho = frame.Ancho - 50
  140.         cajaAdd.Alto  = 25
  141.         cajaAdd.Padre = frame.hWnd
  142.         cajaAdd.fuente.Nombre = "Arial"
  143.         cajaAdd.fuente.Tamaño = 11
  144.         cajaAdd.Deshabilitado = Verdad
  145.         cajaAdd.construir()
  146.  
  147.     grupoLetras.cerrar()
  148.  
  149.     etiquetaGen.Texto = "Generar palabras desde"
  150.     etiquetaGen.PosX  = 10
  151.     etiquetaGen.PosY  = (grupoLetras.Alto + grupoLetras.PosY) + 10
  152.     etiquetaGen.Ancho = 160
  153.     etiquetaGen.Alto  = 30
  154.     etiquetaGen.Padre = frame.hWnd
  155.     etiquetaGen.fuente.Nombre = "Arial"
  156.     etiquetaGen.fuente.Tamaño = 11
  157.     etiquetaGen.construir()
  158.  
  159.     cajaDe.Texto = "2"
  160.     cajaDe.PosX  = (etiquetaGen.PosX + etiquetaGen.Ancho)+2
  161.     cajaDe.PosY  = etiquetaGen.PosY-5
  162.     cajaDe.Ancho = 30
  163.     cajaDe.Alto  = 25
  164.     cajaDe.Padre = frame.hWnd
  165.     cajaDe.fuente.Nombre = "Arial"
  166.     cajaDe.fuente.Tamaño = 11
  167.     cajaDe.construir(ES_NUMBER)
  168.     cajaDe.Limite = 2
  169.  
  170.     etiquetaHas.Texto = "hasta"
  171.     etiquetaHas.PosX  = (cajaDe.PosX + cajaDe.Ancho) + 5
  172.     etiquetaHas.PosY  = etiquetaGen.PosY
  173.     etiquetaHas.Ancho = 40
  174.     etiquetaHas.Alto  = 30
  175.     etiquetaHas.Padre = frame.hWnd
  176.     etiquetaHas.fuente.Nombre = "Arial"
  177.     etiquetaHas.fuente.Tamaño = 11
  178.     etiquetaHas.construir()
  179.  
  180.     cajaHas.Texto = "4"
  181.     cajaHas.PosX  = (etiquetaHas.PosX + etiquetaHas.Ancho)+2
  182.     cajaHas.PosY  = etiquetaGen.PosY-5
  183.     cajaHas.Ancho = 30
  184.     cajaHas.Alto  = 25
  185.     cajaHas.Padre = frame.hWnd
  186.     cajaHas.fuente.Nombre = "Arial"
  187.     cajaHas.fuente.Tamaño = 11
  188.     cajaHas.construir(ES_NUMBER)
  189.     cajaHas.Limite = 2
  190.  
  191.     etiquetaCar.Texto = "caracteres"
  192.     etiquetaCar.PosX  = (cajaHas.PosX + cajaHas.Ancho) + 5
  193.     etiquetaCar.PosY  = etiquetaHas.PosY
  194.     etiquetaCar.Ancho = 150
  195.     etiquetaCar.Alto  = 30
  196.     etiquetaCar.Padre = frame.hWnd
  197.     etiquetaCar.fuente.Nombre = "Arial"
  198.     etiquetaCar.fuente.Tamaño = 11
  199.     etiquetaCar.construir()
  200.  
  201.     botonGenerar.Texto = "Generar"
  202.     botonGenerar.PosX  = frame.Ancho - 90
  203.     botonGenerar.PosY  = frame.Alto - 70
  204.     botonGenerar.Ancho = 70
  205.     botonGenerar.Alto  = 30
  206.     botonGenerar.Padre = frame.hWnd
  207.     botonGenerar.fuente.Nombre = "Arial"
  208.     botonGenerar.fuente.Tamaño = 11
  209.     botonGenerar.construir()
  210.  
  211.     frame.mostrar
  212.     frame.correr
  213.  
  214. Proc checkAddEventClick(hWnd:Entero,Botón:Byte,Presionado:Booleano,X,Y:Entero)
  215.     Seleccionar Botón
  216.         Caso BOTON_IZQUIERDO
  217.             Seleccionar Presionado
  218.                 Caso Falso
  219.                     Si ( checkAdd.estaSeleccionado ) Entonces
  220.                         cajaAdd.Deshabilitado = Falso
  221.                     SiNo
  222.                         cajaAdd.Deshabilitado = Verdad
  223.                     FinSi
  224.             FinSeleccionar
  225.     FinSeleccionar
  226. FinProc
  227.  
  228. Proc botonGenerarEventClick(hWnd:Entero,Botón:Byte,Presionado:Booleano,X,Y:Entero)
  229.     Seleccionar Botón
  230.         Caso BOTON_IZQUIERDO
  231.             Seleccionar Presionado
  232.                 Caso Falso
  233.                     Var hilo, hiloID:Entero
  234.                     hilo = CreateThread(Nulo, 0, [email protected], Nulo, 0, [email protected])
  235.             FinSeleccionar
  236.     FinSeleccionar
  237. FinProc
  238.  
  239. Proc generarDic
  240.     Var CantLet, BufferPalabras, CT, CantPos, Desde, Hasta, Posiciones[]:Entero
  241.     Var Palabras[]:Cadena
  242.  
  243.     Var Letras:Cadena 'string que contendra todos los caracteres a combinar para hacer el diccionario
  244.  
  245.     Letras = ""
  246.  
  247.     'by 79137913 for Underc0de.org
  248.     'creamos secuencia de caracteres a utilizar
  249.     Si (checkNum.estaSeleccionado) Entonces
  250.         Letras = Letras + Num 'si Numeros esta tildado agregamos eso a la cadena
  251.     FinSi
  252.     Si (checkSim.estaSeleccionado) Entonces
  253.         Letras = Letras + Sym 'si Simbolos esta tildado agregamos eso a la cadena
  254.     FinSi
  255.     Si (checkMin.estaSeleccionado) Entonces
  256.         Letras = Letras + Min 'si Letras Minusculas esta tildado agregamos eso a la cadena
  257.     FinSi
  258.     Si (checkMay.estaSeleccionado) Entonces
  259.         Letras = Letras + May 'si Letras Mayusculas esta tildado agregamos eso a la cadena
  260.     FinSi
  261.     Si (checkEspMin.estaSeleccionado) Entonces
  262.         Letras = Letras + SpL 'si Letras Especiales Minusculas esta tildado agregamos eso a la cadena
  263.     FinSi
  264.     Si (checkEspMay.estaSeleccionado) Entonces
  265.         Letras = Letras + SpU 'si Letras Especiales Mayusculas esta tildado agregamos eso a la cadena
  266.     FinSi
  267.     Si (checkAdd.estaSeleccionado) Entonces
  268.         Letras = Letras + cajaAdd.cTexto 'si Agregar Siguientes Caracters esta tildado agregamos eso a la cadena
  269.     FinSi
  270.  
  271.     CantLet = CadLong(Letras) - 1 'cantidad de letras
  272.     BufferPalabras = 10000
  273.     ReDim Palabras, BufferPalabras 'aqui se guardaran las combinaciones mientras las vamos generando en este ejemplo iremos guardando de a 10000 combinaciones
  274.     CT = 0 'este contador nos dira cuantas palabras estan pendientes de guardar en el archivo
  275.     CantPos = 0 'Cantidad de letras palabra actual
  276.     Desde = CadEnt(cajaDe.cTexto) 'desde que cantidad de caracteres
  277.     Hasta = CadEnt(cajaHas.cTexto) 'hasta que cantidad de caracteres
  278.  
  279.     Mensaje("Se iniciara el proceso, puede tardar mucho, para detener cierre la aplicacion con el Administrador de Tareas.", "ATENCION")
  280.  
  281.     diccionarioArchivo.abrir("diccionario.txt", GENERIC_WRITE, CREATE_ALWAYS)
  282.  
  283.     Var x, y, palfile:Entero
  284.  
  285.     y = 0
  286.     Contar y a (Hasta - Desde)
  287.         CantPos = (Desde + y) - 1 'establecemos el tamañode la combinacion actual
  288.         ReDim Posiciones, CantPos
  289.         Repetir
  290.             x = 0
  291.             Contar x a CantPos 'una vez por cada posicion que tenga que tener la palabra
  292.                 Palabras[CT] = Palabras[CT] + Parte(Letras, Posiciones[x]+1, Posiciones[x]+1) 'armamos una combinacion uniendo los caracteres de la cadena letras
  293.             Seguir
  294.  
  295.             CT = CT + 1 'incrementamos CT en 1
  296.             Posiciones[0] = Posiciones[0] + 1 'incrementamos la primera letra de posiciones (para que pase de "a" a "b" por ejemplo)
  297.             x = 0
  298.             Contar x a (CantPos - 1) 'nos fijamos si alguna posicion es mayor a la cantidad de letras si es asi volvemos a 0 esa posicion e incrementamos la siguiente
  299.                 Si (Posiciones[x] > CantLet ) Entonces
  300.                     Posiciones[x] = 0
  301.                     Posiciones[x+1] = Posiciones[x+1] + 1
  302.                 FinSi
  303.             Seguir
  304.  
  305.             Si (CT = (BufferPalabras + 1) ) Entonces
  306.                 palfile = 0
  307.                 Mientras palfile <= &Palabras
  308.                     diccionarioArchivo.escribir(Palabras[palfile] + CRLF) 'escribimos nuestro buffer de palabras en el archivo linea por linea
  309.                     palfile = palfile + 1
  310.                 FinMientras
  311.                 CT = 0 'volvemos el contador a 0
  312.                 ReDim Palabras, BufferPalabras 'borramos el buffer de palabras
  313.             FinSi
  314.  
  315.         HastaQue Posiciones[CantPos] = CantLet +1
  316.     Seguir
  317.  
  318.     Si (CT > 0) Entonces 'si hay palabras pendientes de escribir
  319.         ReDim Preservar Palabras, (CT - 1)        
  320.         palfile = 0
  321.         Mientras palfile < &Palabras
  322.             diccionarioArchivo.escribir(Palabras[palfile] + CRLF) 'escribimos nuestro buffer de palabras en el archivo linea por linea
  323.             palfile = palfile + 1
  324.         FinMientras
  325.         CT = 0
  326.     FinSi
  327.  
  328.     Mensaje("Terminado archivo guardado como diccionario.txt", "ATENCION")
  329.     diccionarioArchivo.cerrar()
  330.  
  331. FinProc
  332.  
  333. Destruir diccionarioArchivo
  334. Destruir grupoLetras
  335. Destruir botonGenerar
  336. Destruir etiquetaCar
  337. Destruir etiquetaHas
  338. Destruir etiquetaGen
  339. Destruir cajaHas
  340. Destruir cajaDe
  341. Destruir cajaAdd
  342. Destruir checkAdd
  343. Destruir checkEspMay
  344. Destruir checkMay
  345. Destruir checkSim
  346. Destruir checkEspMin
  347. Destruir checkMin
  348. Destruir checkNum
  349. Destruir frame



8
Underc0de / Re:Grupo de WhatsApp de Underc0de
« en: Junio 28, 2017, 11:21:39 am »
Hola, fui eliminado hace meses por preguntar algo que debi publicar en el foro.

Ya aprendí mi lección, soy graduado en ing telecomunicaciones pero aficionado a la informática.
Podrian porfas facilitarme el ingreso? :D
Tengo entendido que: si fuiste expulsado, ya no puedes volver de nuevo.

Enviado desde mi MotoG3 mediante Tapatalk


9
Otros lenguajes / Re:[Cramel] AdminFinder by 79137913 [Aplicación]
« en: Junio 26, 2017, 01:21:11 am »
Muy copada la aplicación, yo también estaba pensando en traducir los códigos de numéritos.

Me interesa ver el código fuente, espero con ansias la publicación!

salu2

Listo, acabo de agregar el source en el mismo post, iba a hacer uno aparte, pero lo vi innecesario, jeje.

Cualquier sugerencia, o error, comentame.

10
Otros lenguajes / [Cramel] HTTPRequest.cml ~ Haz peticiones GET & POST
« en: Junio 26, 2017, 12:53:10 am »
Les traigo este código el cual te facilita las peticiones GET y POST.


Información
  • Compatible con Cramel: 2.0.0.362
  • Librerías requeridas: MSVBVM60.cml


Tiene los siguientes métodos:
  • Conectar(Opcional Usuario:Cadena = Nulo, Opcional Contraseña:Cadena = Nulo) - Establece una conexión con el servidor
  • Enviar - Envía la petición a la dirección establecida
  • LeerRespuesta - Devuelve la pagina (el código fuente) resultante de la petición

Tiene las siguientes Propiedades:
  • Version - Establece o devuelve la versión del HTTP que se usará para la petición | HTTP/1.0 - HTTP/1.1
  • Agente - Establece o devuelve el nombre de la aplicación | User-Agent
  • Servidor - Establece o devuelve la dirección del servidor al que se hará la petición | No debe incluirse el http://
  • Puerto - Establece o devuelve el puerto usado en la petición | Por defecto 80
  • Metodo - Establece o devuelve el método usado para hacer la petición | GET - POST
  • Parametros - Establece los parametros que se usaran para la petición | [/index.php?test=Hola
  • Dirección - Establece o devuelve la dirección a la que se hará la petición, ya sea a una carpeta o archivo | Ejemplo: /index.php | Nota: debe llevar el / al prinicipio
  • Error - Devuelve el error que sucedió si algo no salió bien
  • StatusCode - Devuelve el código de estado de la petición
  • StatusText - Devuelve el texto referente al código de estado
  • TamañoPagina - Devuelve el tamaño que tiene la pagina resultante de la petición, solo si no hubo redirección por en medio

Para usarla solo es de Importar la librería Cramel, HTTPRequest, su archivo de constantes y apis propia; después declaramos una variable del tipo HTTP y creamos el objecto.

Y es todo por el momento.

Aquí el código HTTPRequest.cml:
Código: Text
  1. '/**
  2. ' * HTTP Request
  3. ' *
  4. ' * @author  Jovani Pérez Damián (@BlackBlex)
  5. ' *
  6. ' * ==============Information==============
  7. ' *      Filename: HTTPRequest.cml
  8. ' * ---------------------------------------
  9. '*/
  10.  
  11. Clase HTTP,_
  12.     pServidor:Cadena,_
  13.     pDirección:Cadena,_
  14.     pAgente:Cadena,_
  15.     pMetodo:Cadena,_
  16.     pError:Cadena,_
  17.     pVersion:Cadena,_
  18.     pPuerto:Word,_
  19.     ppOpen:Entero,_
  20.     pConnect:Entero,_
  21.     pRequest:Entero,_
  22.     pStatusCode:Entero,_
  23.     pStatusText:Cadena,_
  24.     pTamañoPagina:Entero
  25.  
  26.     Var Content:Cadena
  27.     Var Parametros:Cadena
  28.     Var Buffer:Cadena
  29.     Var BufferSta:Entero
  30.     Var Lent:Entero
  31.     Var QueryInfo:Cadena
  32.     Var TamQueryInfo:Entero
  33.  
  34.     Constructor:Inicializar
  35.     Destructor:Finalizar
  36.  
  37.     Sección Privada
  38.         Proc Inicializar
  39.             pAgente = "CramelRequest"
  40.             pPuerto = INTERNET_DEFAULT_HTTP_PORT
  41.             pVersion = "HTTP/1.1"
  42.             pMetodo = "GET"
  43.         FinProc
  44.  
  45.         Proc Finalizar
  46.             Si ( pConnect ) Entonces
  47.                 InternetCloseHandle(pConnect)
  48.             FinSi
  49.             Si ( ppOpen ) Entonces
  50.                 InternetCloseHandle(ppOpen)
  51.             FinSi
  52.         FinProc
  53.  
  54.         Proc SetStatusText
  55.             Seleccionar pStatusCode
  56.                 Caso HTTP_STATUS_CONTINUE
  57.                     pStatusText = "La solicitud puede continuar."
  58.                 Caso HTTP_STATUS_OK
  59.                     pStatusText = "La solicitud se completó correctamente."
  60.                 Caso HTTP_STATUS_MOVED
  61.                     pStatusText = "El recurso solicitado se ha asignado a un nuevo URI permanente (Uniform Resource Identifier), y cualquier referencia futura a este recurso se debe hacer usando uno de los URIs devueltos."
  62.                 Caso HTTP_STATUS_REDIRECT
  63.                     pStatusText = "El recurso solicitado reside temporalmente bajo un URI diferente (Uniform Resource Identifier)."
  64.                 Caso HTTP_STATUS_BAD_REQUEST
  65.                     pStatusText = "La solicitud no pudo ser procesada por el servidor debido a la sintaxis no válida."
  66.                 Caso HTTP_STATUS_FORBIDDEN
  67.                     pStatusText = "Acceso denegado."
  68.                 Caso HTTP_STATUS_NOT_FOUND
  69.                     pStatusText = "El servidor no ha encontrado nada que coincida con el URI solicitado (Uniform Resource Identifier)."
  70.                 Caso HTTP_STATUS_SERVER_ERROR
  71.                     pStatusText = "El servidor encontró una condición inesperada que le impidió cumplir con la solicitud."
  72.                 Caso HTTP_STATUS_SERVICE_UNAVAIL
  73.                     pStatusText = "El servicio está temporalmente sobrecargado."
  74.             FinSeleccionar
  75.         FinProc
  76.  
  77.         Proc SetError
  78.             Seleccionar GetLastError()
  79.                 Caso ERROR_INTERNET_OPERATION_CANCELLED
  80.                     pError = "La operación se canceló, normalmente porque el identificador en el que se estaba ejecutando la solicitud se cerró antes de que se completase la operación."
  81.                 Caso ERROR_INTERNET_INCORRECT_HANDLE_TYPE
  82.                     pError = "El tipo de identificador suministrado es incorrecto para esta operación."
  83.                 Caso ERROR_INTERNET_INTERNAL_ERROR
  84.                     pError = "Ha ocurrido un error interno."
  85.                 Caso ERROR_INTERNET_INVALID_URL
  86.                     pError = "La URL no es válida."
  87.                 Caso ERROR_INTERNET_UNRECOGNIZED_SCHEME
  88.                     pError = "El esquema de la URL es distinto de \x22http:\x22 o \x22https:\x22."
  89.                 Caso ERROR_INTERNET_SHUTDOWN
  90.                     pError = "La ayuda de la función INTERNET se está cerrando o está fuera del alcance."
  91.                 Caso ERROR_NOT_ENOUGH_MEMORY
  92.                     pError = "No hay suficiente memoria disponible para completar la operación solicitada."
  93.                 Caso ERROR_INTERNET_CANNOT_CONNECT
  94.                     pError = "La conexión al servidor falló."
  95.                 Caso ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED
  96.                     pError = "El servidor requiere autenticación de cliente SSL."
  97.                 Caso ERROR_INTERNET_CONNECTION_ERROR
  98.                     pError = "Se ha restablecido o se ha finalizado la conexión con el servidor o se ha detectado un protocolo SSL incompatible."
  99.                 Caso ERROR_INTERNET_INCORRECT_HANDLE_STATE
  100.                     pError = "La operación solicitada no se puede realizar porque el identificador suministrado no está en el estado correcto."
  101.                 Caso ERROR_INTERNET_LOGIN_FAILURE
  102.                     pError = "El intento de inicio de sesión falló. Cuando se encuentra este error, el identificador de solicitud debe cerrarse con InternetCloseHandle."
  103.                 Caso ERROR_INTERNET_NAME_NOT_RESOLVED
  104.                     pError = "No se puede resolver el nombre del servidor."
  105.                 Caso ERROR_INTERNET_RESPONSE_DRAIN_OVERFLOW
  106.                     pError = "La respuesta entrante excede un tamaño límite interno."
  107.                 Caso ERROR_INTERNET_SECURE_FAILURE
  108.                     pError = "Uno o más errores se encontraron en el certificado SSL enviado por el servidor."
  109.                 Caso ERROR_INTERNET_TIMEOUT
  110.                     pError = "El tiempo de la solicitud se ha agotado."
  111.                 Caso ERROR_INVALID_PARAMETER
  112.                     pError = "El parámetro es invalido"
  113.                 Caso ERROR_INTERNET_RESEND_REQUEST
  114.                     pError = "La aplicación debe llamar HttpSendRequest de nuevo debido a un problema de redirección o la autenticación."
  115.                 Caso ERROR_INSUFFICIENT_BUFFER
  116.                     pError = "Buffer insuficiente."
  117.             FinSeleccionar
  118.             SetLastError(0)
  119.         FinProc
  120.  
  121.         Proc escribirServidor(dato:Cadena)
  122.             pServidor = dato
  123.         FinProc
  124.         Proc leerServidor:Cadena
  125.             Resultado = pServidor
  126.         FinProc
  127.        
  128.         Proc escribirPuerto(dato:Word)
  129.             pPuerto = dato
  130.         FinProc
  131.         Proc leerPuerto:Word
  132.             Resultado = pPuerto
  133.         FinProc
  134.  
  135.         Proc escribirAgente(dato:Cadena)
  136.             pAgente = dato
  137.             Si (pRequest) Entonces
  138.                 HttpAddRequestHeaders(pRequest, pAgente, -1, (HTTP_ADDREQ_FLAG_REPLACE Or HTTP_ADDREQ_FLAG_ADD))
  139.             FinSi
  140.         FinProc
  141.         Proc leerAgente:Cadena
  142.             Resultado = pAgente
  143.         FinProc
  144.  
  145.         Proc escribirMetodo(dato:Cadena)
  146.             pMetodo = Mayúsculas(dato)
  147.         FinProc
  148.         Proc leerMetodo:Cadena
  149.             Resultado = pMetodo
  150.         FinProc
  151.  
  152.         Proc escribirDirección(dato:Cadena)
  153.             pDirección = dato
  154.         FinProc
  155.         Proc leerDirección:Cadena
  156.             Resultado = pDirección
  157.         FinProc
  158.  
  159.         Proc escribirError(dato:Cadena)
  160.  
  161.         FinProc
  162.         Proc leerError:Cadena
  163.             Resultado = pError
  164.         FinProc
  165.  
  166.         Proc escribirVersion(dato:Cadena)
  167.             pVersion = dato
  168.         FinProc
  169.         Proc leerVersion:Cadena
  170.             Resultado = pVersion
  171.         FinProc
  172.  
  173.         Proc escribirStatusCode(dato:Entero)
  174.             pStatusCode = dato
  175.             SetStatusText
  176.         FinProc
  177.         Proc leerStatusCode:Entero
  178.             Resultado = pStatusCode
  179.         FinProc
  180.  
  181.         Proc escribirStatusText(dato:Cadena)
  182.             pStatusText = dato
  183.         FinProc
  184.         Proc leerStatusText:Cadena
  185.             Resultado = pStatusText
  186.         FinProc
  187.  
  188.         Proc escribirTamañoPagina(dato:Entero)
  189.             pTamañoPagina = dato
  190.         FinProc
  191.         Proc leerTamañoPagina:Entero
  192.             Resultado = pTamañoPagina
  193.         FinProc
  194.  
  195.     Sección Pública
  196.         Prop Version:Cadena
  197.             Lectura:leerVersion
  198.             Escritura:escribirVersion
  199.         FinProp
  200.  
  201.         Prop Agente:Cadena
  202.             Lectura:leerAgente
  203.             Escritura:escribirAgente
  204.         FinProp
  205.  
  206.         Prop Servidor:Cadena
  207.             Lectura:leerServidor
  208.             Escritura:escribirServidor
  209.         FinProp
  210.  
  211.         Prop Puerto:Word
  212.             Lectura:leerPuerto
  213.             Escritura:escribirPuerto
  214.         FinProp
  215.  
  216.         Prop Metodo:Cadena
  217.             Lectura:leerMetodo
  218.             Escritura:escribirMetodo
  219.         FinProp
  220.  
  221.         Prop Dirección:Cadena
  222.             Lectura:leerDirección
  223.             Escritura:escribirDirección
  224.         FinProp
  225.  
  226.         Prop Error:Cadena
  227.             Lectura:leerError
  228.             Escritura:escribirError
  229.         FinProp
  230.  
  231.         Prop StatusCode:Entero
  232.             Lectura:leerStatusCode
  233.             Escritura:escribirStatusCode
  234.         FinProp
  235.  
  236.         Prop StatusText:Cadena
  237.             Lectura:leerStatusText
  238.             Escritura:escribirStatusText
  239.         FinProp
  240.  
  241.         Prop TamañoPagina:Entero
  242.             Lectura:leerTamañoPagina
  243.             Escritura:escribirTamañoPagina
  244.         FinProp
  245.  
  246.         Proc Conectar(Opcional Usuario:Cadena = Nulo, Opcional Contraseña:Cadena = Nulo):Booleano
  247.             Si pServidor = "" Entonces
  248.                 Salir
  249.             FinSi
  250.  
  251.             ppOpen = InternetOpen(pAgente, INTERNET_OPEN_TYPE_PRECONFIG, Nulo, Nulo, 0)
  252.  
  253.             Si (ppOpen) Entonces
  254.                 pConnect = InternetConnect(ppOpen, pServidor, pPuerto, Usuario, Contraseña, INTERNET_SERVICE_HTTP, 0, 0)
  255.                 Si (pConnect) Entonces
  256.                     Devolver Verdad
  257.                 SiNo
  258.                     SetError()
  259.                     Devolver Falso
  260.                 FinSi
  261.             SiNo
  262.                 Salir
  263.             FinSi
  264.         FinProc
  265.  
  266.         Proc Enviar():Entero
  267.             Si (pConnect = 0) Entonces
  268.                 Devolver Falso
  269.             FinSi
  270.  
  271.             pRequest = HttpOpenRequest(pConnect, pMetodo, pDirección, pVersion, Nulo, Nulo, (INTERNET_FLAG_NO_COOKIES Or INTERNET_FLAG_NO_CACHE_WRITE), 0)
  272.  
  273.             Si (pRequest = 0) Entonces
  274.                 SetError
  275.                 Devolver Falso
  276.             FinSi
  277.  
  278.             Si (pAgente != "") Entonces
  279.                 HttpAddRequestHeaders(pRequest, pAgente, -1, (HTTP_ADDREQ_FLAG_REPLACE Or HTTP_ADDREQ_FLAG_ADD))
  280.             FinSi
  281.  
  282.             Seleccionar pMetodo
  283.                 Caso "POST"
  284.                     Content = "Content-Type: application/x-www-form-urlencoded"
  285.                     Si CadLong(Parametros) <> 0 Entonces
  286.                         Si HttpSendRequest(pRequest, Content, CadLong(Content), Parametros, CadLong(Parametros)) = Falso Entonces
  287.                             SetError
  288.                             Devolver Falso
  289.                         FinSi
  290.                     FinSi
  291.                 Caso "GET"
  292.                     Si HttpSendRequest(pRequest, Nulo, 0, Nulo, 0) = Falso Entonces
  293.                         SetError
  294.                         Devolver Falso
  295.                     FinSi
  296.             FinSeleccionar
  297.  
  298.             QueryInfo = Espacio(1024)
  299.             TamQueryInfo = CadLong(QueryInfo)
  300.             HttpQueryInfo(pRequest, HTTP_QUERY_STATUS_CODE, StrPtr(QueryInfo), [email protected], [email protected] )
  301.             EsteObjeto.StatusCode = CadEnt(QueryInfo)
  302.  
  303.             QueryInfo = Espacio(1024)
  304.             TamQueryInfo = CadLong(QueryInfo)
  305.             HttpQueryInfo(pRequest, HTTP_QUERY_CONTENT_LENGTH, StrPtr(QueryInfo), [email protected], [email protected] )
  306.             EsteObjeto.TamañoPagina = CadEnt(QueryInfo)
  307.  
  308.             Resultado = Verdad
  309.         FinProc
  310.  
  311.         Proc LeerRespuesta:Cadena
  312.             Var control:Booleano
  313.             Si (pRequest) Entonces
  314.                 control = Verdad
  315.                 Buffer = Espacio(400)
  316.                 Mientras control != Falso
  317.                     InternetReadFile(pRequest, StrPtr(Buffer), 400, [email protected])
  318.                     Si Lent = Falso Entonces
  319.                         control = Falso
  320.                         SetError
  321.                         Salir
  322.                     FinSi
  323.                     Resultado = Resultado + Buffer
  324.                 FinMientras
  325.             FinSi
  326.         FinProc
  327.  
  328. FinClase

Archivo Constantes.cml <- Se recomienda que tengan un archivo propio de constantes (y que sea global), donde puedan poner todas las constantes que no contenta Cramel por defecto.
Código: Text
  1. '/**
  2. ' * Constantes para el HTTPRequest
  3. ' *
  4. ' * @author  Jovani Pérez Damián (@BlackBlex)
  5. ' *
  6. ' * ==============Information==============
  7. ' *      Filename: Constantes.cml
  8. ' * ---------------------------------------
  9. '*/
  10.  
  11. 'Constantes HTTP
  12.     Const INTERNET_OPEN_TYPE_PRECONFIG                   = 0
  13.     Const INTERNET_OPEN_TYPE_DIRECT                      = 1
  14.     Const INTERNET_OPEN_TYPE_PROXY                       = 3
  15.     Const INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY = 4
  16.    
  17.     Const INTERNET_SERVICE_FTP    = 1
  18.     Const INTERNET_SERVICE_GOPHER = 2
  19.     Const INTERNET_SERVICE_HTTP   = 3
  20.  
  21.     Const INTERNET_INVALID_PORT_NUMBER = 0    ''
  22.     Const INTERNET_DEFAULT_HTTP_PORT   = 80   ''
  23.     Const INTERNET_DEFAULT_HTTPS_PORT  = 443  ''
  24.     Const INTERNET_DEFAULT_FTP_PORT    = 21   ''
  25.     Const INTERNET_DEFAULT_SOCKS_PORT  = 1080 ''
  26.  
  27.     Const INTERNET_FLAG_RELOAD         = &80000000
  28.     Const INTERNET_FLAG_NO_CACHE_WRITE = &04000000
  29.     Const INTERNET_FLAG_PRAGMA_NOCACHE = &00000100
  30.     Const INTERNET_FLAG_NO_COOKIES     = &00080000
  31.     Const INTERNET_FLAG_SECURE         = &00800000
  32.  
  33.     Const INTERNET_OPTION_CONNECT_TIMEOUT = 2
  34.     Const INTERNET_OPTION_SEND_TIMEOUT    = 5
  35.     Const INTERNET_OPTION_RECEIVE_TIMEOUT = 6
  36.     Const INTERNET_OPTION_SECURITY_FLAGS  = 31
  37.     Const SECURITY_FLAG_IGNORE_UNKNOWN_CA = &100
  38.  
  39.     Const HTTP_ADDREQ_FLAG_ADD_IF_NEW              = &10000000
  40.     Const HTTP_ADDREQ_FLAG_ADD                     = &20000000
  41.     Const HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA     = &40000000
  42.     Const HTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON = &01000000
  43.     Const HTTP_ADDREQ_FLAG_REPLACE                 = &80000000
  44.  
  45.     Const HTTP_QUERY_STATUS_CODE      = 19
  46.     Const HTTP_QUERY_STATUS_TEXT      = 20
  47.     Const HTTP_QUERY_RAW_HEADERS      = 21
  48.     Const HTTP_QUERY_RAW_HEADERS_CRLF = 22
  49.  
  50.     Const CONNECTION_TIMEOUT_MILLIS = 60000
  51.  
  52.     'Status'
  53.         Const HTTP_STATUS_CONTINUE         = 100
  54.         Const HTTP_STATUS_SWITCH_PROTOCOLS = 101
  55.  
  56.         Const HTTP_STATUS_OK              = 200
  57.         Const HTTP_STATUS_CREATED         = 201
  58.         Const HTTP_STATUS_ACCEPTED        = 202
  59.         Const HTTP_STATUS_PARTIAL         = 203
  60.         Const HTTP_STATUS_NO_CONTENT      = 204
  61.         Const HTTP_STATUS_RESET_CONTENT   = 205
  62.         Const HTTP_STATUS_PARTIAL_CONTENT = 206
  63.  
  64.         Const HTTP_STATUS_AMBIGUOUS          = 300
  65.         Const HTTP_STATUS_MOVED              = 301
  66.         Const HTTP_STATUS_REDIRECT           = 302
  67.         Const HTTP_STATUS_REDIRECT_METHOD    = 303
  68.         Const HTTP_STATUS_NOT_MODIFIED       = 304
  69.         Const HTTP_STATUS_USE_PROXY          = 305
  70.         Const HTTP_STATUS_REDIRECT_KEEP_VERB = 307
  71.  
  72.         Const HTTP_STATUS_BAD_REQUEST       = 400
  73.         Const HTTP_STATUS_DENIED            = 401
  74.         Const HTTP_STATUS_PAYMENT_REQ       = 402
  75.         Const HTTP_STATUS_FORBIDDEN         = 403
  76.         Const HTTP_STATUS_NOT_FOUND         = 404
  77.         Const HTTP_STATUS_BAD_METHOD        = 405
  78.         Const HTTP_STATUS_NONE_ACCEPTABLE   = 406
  79.         Const HTTP_STATUS_PROXY_AUTH_REQ    = 407
  80.         Const HTTP_STATUS_REQUEST_TIMEOUT   = 408
  81.         Const HTTP_STATUS_CONFLICT          = 409
  82.         Const HTTP_STATUS_GONE              = 410
  83.         Const HTTP_STATUS_LENGTH_REQUIRED   = 411
  84.         Const HTTP_STATUS_PRECOND_FAILED    = 412
  85.         Const HTTP_STATUS_REQUEST_TOO_LARGE = 413
  86.         Const HTTP_STATUS_URI_TOO_LONG      = 414
  87.         Const HTTP_STATUS_UNSUPPORTED_MEDIA = 415
  88.         Const HTTP_STATUS_RETRY_WITH        = 449
  89.  
  90.         Const HTTP_STATUS_SERVER_ERROR    = 500
  91.         Const HTTP_STATUS_NOT_SUPPORTED   = 501
  92.         Const HTTP_STATUS_BAD_GATEWAY     = 502
  93.         Const HTTP_STATUS_SERVICE_UNAVAIL = 503
  94.         Const HTTP_STATUS_GATEWAY_TIMEOUT = 504
  95.         Const HTTP_STATUS_VERSION_NOT_SUP = 505
  96.     'Status'
  97.  
  98.     'POST Header'
  99.         Const HTTP_QUERY_ACCEPT                    = 24
  100.         Const HTTP_QUERY_ACCEPT_CHARSET            = 25
  101.         Const HTTP_QUERY_ACCEPT_ENCODING           = 26
  102.         Const HTTP_QUERY_ACCEPT_LANGUAGE           = 27
  103.         Const HTTP_QUERY_ACCEPT_RANGES             = 42
  104.         Const HTTP_QUERY_AGE                       = 48
  105.         Const HTTP_QUERY_ALLOW                     = 7
  106.         Const HTTP_QUERY_AUTHORIZATION             = 28
  107.         Const HTTP_QUERY_CACHE_CONTROL             = 49
  108.         Const HTTP_QUERY_CONNECTION                = 23
  109.         Const HTTP_QUERY_CONTENT_BASE              = 50
  110.         Const HTTP_QUERY_CONTENT_DESCRIPTION       = 4
  111.         Const HTTP_QUERY_CONTENT_DISPOSITION       = 47
  112.         Const HTTP_QUERY_CONTENT_ENCODING          = 29
  113.         Const HTTP_QUERY_CONTENT_ID                = 3
  114.         Const HTTP_QUERY_CONTENT_LANGUAGE          = 6
  115.         Const HTTP_QUERY_CONTENT_LENGTH            = 5
  116.         Const HTTP_QUERY_CONTENT_LOCATION          = 51
  117.         Const HTTP_QUERY_CONTENT_MD5               = 52
  118.         Const HTTP_QUERY_CONTENT_RANGE             = 53
  119.         Const HTTP_QUERY_CONTENT_TRANSFER_ENCODING = 2
  120.         Const HTTP_QUERY_CONTENT_TYPE              = 1
  121.         Const HTTP_QUERY_COOKIE                    = 44
  122.         Const HTTP_QUERY_COST                      = 15
  123.         Const HTTP_QUERY_CUSTOM                    = 65535
  124.         Const HTTP_QUERY_DATE                      = 9
  125.         Const HTTP_QUERY_DERIVED_FROM              = 14
  126.         Const HTTP_QUERY_ECHO_HEADERS              = 73
  127.         Const HTTP_QUERY_ECHO_HEADERS_CRLF         = 74
  128.         Const HTTP_QUERY_ECHO_REPLY                = 72
  129.         Const HTTP_QUERY_ECHO_REQUEST              = 71
  130.         Const HTTP_QUERY_ETAG                      = 54
  131.         Const HTTP_QUERY_EXPECT                    = 68
  132.         Const HTTP_QUERY_EXPIRES                   = 10
  133.         Const HTTP_QUERY_FORWARDED                 = 30
  134.         Const HTTP_QUERY_FROM                      = 31
  135.         Const HTTP_QUERY_HOST                      = 55
  136.         Const HTTP_QUERY_IF_MATCH                  = 56
  137.         Const HTTP_QUERY_IF_MODIFIED_SINCE         = 32
  138.         Const HTTP_QUERY_IF_NONE_MATCH             = 57
  139.         Const HTTP_QUERY_IF_RANGE                  = 58
  140.         Const HTTP_QUERY_IF_UNMODIFIED_SINCE       = 59
  141.         Const HTTP_QUERY_LAST_MODIFIED             = 11
  142.         Const HTTP_QUERY_LINK                      = 16
  143.         Const HTTP_QUERY_LOCATION                  = 33
  144.         Const HTTP_QUERY_MAX                       = 78
  145.         Const HTTP_QUERY_MAX_FORWARDS              = 60
  146.         Const HTTP_QUERY_MESSAGE_ID                = 12
  147.         Const HTTP_QUERY_MIME_VERSION              = 0
  148.         Const HTTP_QUERY_ORIG_URI                  = 34
  149.         Const HTTP_QUERY_PRAGMA                    = 17
  150.         Const HTTP_QUERY_PROXY_AUTHENTICATE        = 41
  151.         Const HTTP_QUERY_PROXY_AUTHORIZATION       = 61
  152.         Const HTTP_QUERY_PROXY_CONNECTION          = 69
  153.         Const HTTP_QUERY_PUBLIC                    = 8
  154.         Const HTTP_QUERY_RANGE                     = 62
  155.         Const HTTP_QUERY_RAW_HEADERS               = 21
  156.         Const HTTP_QUERY_RAW_HEADERS_CRLF          = 22
  157.         Const HTTP_QUERY_REFERER                   = 35
  158.         Const HTTP_QUERY_REFRESH                   = 46
  159.         Const HTTP_QUERY_REQUEST_METHOD            = 45
  160.         Const HTTP_QUERY_RETRY_AFTER               = 36
  161.         Const HTTP_QUERY_SERVER                    = 37
  162.         Const HTTP_QUERY_SET_COOKIE                = 43
  163.         Const HTTP_QUERY_STATUS_CODE               = 19
  164.         Const HTTP_QUERY_STATUS_TEXT               = 20
  165.         Const HTTP_QUERY_TITLE                     = 38
  166.         Const HTTP_QUERY_TRANSFER_ENCODING         = 63
  167.         Const HTTP_QUERY_UNLESS_MODIFIED_SINCE     = 70
  168.         Const HTTP_QUERY_UPGRADE                   = 64
  169.         Const HTTP_QUERY_URI                       = 13
  170.         Const HTTP_QUERY_USER_AGENT                = 39
  171.         Const HTTP_QUERY_VARY                      = 65
  172.         Const HTTP_QUERY_VERSION                   = 18
  173.         Const HTTP_QUERY_VIA                       = 66
  174.         Const HTTP_QUERY_WARNING                   = 67
  175.         Const HTTP_QUERY_WWW_AUTHENTICATE          = 40
  176.     'POST Header'
  177.  
  178.     Const INTERNET_ERROR_BASE                    = 12000                     ''
  179.     Const ERROR_INTERNET_TIMEOUT                 = (INTERNET_ERROR_BASE + 2) ''
  180.     Const ERROR_INTERNET_INTERNAL_ERROR          = (INTERNET_ERROR_BASE + 4) ''
  181.     Const ERROR_INTERNET_INVALID_URL             = (INTERNET_ERROR_BASE + 5) ''
  182.     Const ERROR_INTERNET_UNRECOGNIZED_SCHEME     = (INTERNET_ERROR_BASE + 6) ''
  183.     Const ERROR_INTERNET_NAME_NOT_RESOLVED       = (INTERNET_ERROR_BASE + 7) ''
  184.     Const ERROR_INTERNET_SHUTDOWN                = (INTERNET_ERROR_BASE + 12) ''
  185.     Const ERROR_INTERNET_LOGIN_FAILURE           = (INTERNET_ERROR_BASE + 15) ''
  186.     Const ERROR_INTERNET_OPERATION_CANCELLED     = (INTERNET_ERROR_BASE + 17) ''
  187.     Const ERROR_INTERNET_INCORRECT_HANDLE_TYPE   = (INTERNET_ERROR_BASE + 18) ''
  188.     Const ERROR_INTERNET_INCORRECT_HANDLE_STATE  = (INTERNET_ERROR_BASE + 19) ''
  189.     Const ERROR_INTERNET_CANNOT_CONNECT          = (INTERNET_ERROR_BASE + 29) ''
  190.     Const ERROR_INTERNET_CONNECTION_ERROR        = (INTERNET_ERROR_BASE + 30) ''
  191.     Const ERROR_INTERNET_RESEND_REQUEST          = (INTERNET_ERROR_BASE + 32) ''
  192.     Const ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED = (INTERNET_ERROR_BASE + 44) ''
  193.     Const ERROR_INTERNET_SECURE_FAILURE          = (INTERNET_ERROR_BASE + 175) ''
  194.     Const ERROR_INTERNET_RESPONSE_DRAIN_OVERFLOW = (INTERNET_ERROR_BASE + 184) ''
  195.     Const ERROR_INVALID_PARAMETER                = 87                         ''
  196.     Const ERROR_NOT_ENOUGH_MEMORY                = 8                          ''
  197.     Const ERROR_INSUFFICIENT_BUFFER              = 122
  198. 'Constantes HTTP

Archivo APIS.cml <- Se recomienda que tengan un archivo propio de APIS (y que sea global), donde puedan poner todas las APIS que no contenta Cramel por defecto.
Código: Text
  1. '/**
  2. ' * APIS para el HTTP Request
  3. ' *
  4. ' * @author  Jovani Pérez Damián (@BlackBlex)
  5. ' *
  6. ' * ==============Information==============
  7. ' *      Filename: APIS.cml
  8. ' * ---------------------------------------
  9. '*/
  10.  
  11. 'APIS HTTP'
  12.     API InternetOpen(sAgent:Cadena, lAccessType:Entero, sProxyName:Cadena, sProxyBypass:Cadena, lFlags:Entero):Entero, "wininet.dll" "InternetOpenA"
  13.     API InternetConnect(hInternetSession:Entero, sServerName:Cadena, nServerPort:Entero, sUsername:Cadena, sPassword:Cadena, lService:Entero, lFlags:Entero, lContext:Entero):Entero, "wininet.dll" "InternetConnectA"
  14.     API InternetCloseHandle(hInet:Entero):Entero, "wininet.dll"
  15.     API InternetQueryDataAvailable(hHttpRequest:Entero, lNumberOfBytesAvailable:Entero, lFlags:Entero, lContext:Entero):Entero, "wininet.dll"
  16.     API InternetReadFile(hFile:Entero, sBuffer:Entero, lNumBytesToRead:Entero, lNumberOfBytesRead:Entero):Entero, "wininet.dll"
  17.     API InternetQueryOption(hHttpRequest:Entero, dwOption:Entero, lpBuffer:Entero, dwBufferLength:Entero):Entero, "wininet.dll" "InternetQueryOptionA"
  18.     API InternetSetOption(hHttpRequest:Entero, dwOption:Entero, lpBuffer:Entero, dwBufferLength:Entero):Entero, "wininet.dll" "InternetSetOptionA"
  19.     API HttpOpenRequest(hHttpSession:Entero, sVerb:Cadena, sObjectName:Cadena, sVersion:Cadena, sReferer:Cadena, sAcceptTypes:Cadena, lFlags:Entero, lContext:Entero):Entero, "wininet.dll" "HttpOpenRequestA"
  20.     API HttpAddRequestHeaders(hHttpRequest:Entero, sHeaders:Cadena, lHeadersLength:Entero, lModifiers:Entero):Entero, "wininet.dll" "HttpAddRequestHeadersA"
  21.     API HttpSendRequest(hHttpRequest:Entero, sHeaders:Cadena, lHeadersLength:Entero, sOptional:Cadena, lOptionalLength:Entero):Entero, "wininet.dll" "HttpSendRequestA"
  22.     API HttpQueryInfo(hHttpRequest:Entero, lInfoLevel:Entero, lBuffer:Entero, lBufferLength:Entero, lIndex:Entero), "wininet.dll" "HttpQueryInfoA"
  23.     API HttpEndRequest(hHttpRequest:Entero, lpBuffersOut:Entero, dwFlags:Entero, dwContext:Entero):Entero, "wininet.dll" "HttpEndRequestA"
  24. 'APIS HTTP'

Y aquí un ejemplo usando HTTPRequest.cml
Código: Text
  1. Importar "Cramel.cml"
  2. Importar "MSVBVM60\MSVBVM60.cml"
  3. Importar "Constantes.cml"
  4. Importar "APIS.cml"
  5. Importar "HTTPRequest.cml"
  6.  
  7. Var request:HTTP
  8. Var text:Cadena
  9.  
  10. Crear request
  11.     request.Metodo = "POST"
  12.     request.Parametros = "test=Hola"
  13.     request.Puerto = INTERNET_DEFAULT_HTTP_PORT
  14.     request.Servidor = "localhost"
  15.     request.Dirección = "/index.php"
  16.     request.Agente = "CramelRequest [POST]"
  17.  
  18.     Si ( request.Conectar ) Entonces
  19.         Si ( request.Enviar ) Entonces
  20.             text = request.LeerRespuesta
  21.             Si ( request.StatusCode = HTTP_STATUS_NOT_FOUND ) Entonces
  22.                 Mensaje("La dirección es incorrecta")
  23.             SiNo
  24.                 Mensaje(EntCad(request.StatusCode) + CRLF + request.StatusText + CRLF + "Tamaño de respuesta: " + EntCad(request.TamañoPagina) + CRLF + text)
  25.             FinSi
  26.         SiNo
  27.             Mensaje(request.Error)
  28.         FinSi
  29.     SiNo
  30.         Mensaje(request.Error)
  31.     FinSi
  32.  
  33. Destruir request




Gracias a @Yuki - Por su antigua librería de HTTP de la cual solo me toco portar a Cramel.

Cualquier sugerencia, o error, comenten.

11
Les traigo el siguiente Port de una aplicación echa por @79137913 en el post de Crea tu propio AdminFinder con VB.NET en solo 3 pasos!

Esta aplicación por el momento esta realizada en modo Consola, en los siguientes días les traeré el modo gráfico.




Descarga: Mega


Para funcionar la aplicación necesita de un diccionario(paths.txt) donde contendrá todas las posibles carpetas de admins o archivos de login



Código fuente


Aquí les traigo el source del AdminFinder, como verán usa el mismo método de detección (cargar una lista, e ir comprobando cada una)

Archivo AdminFinder.cml
Código: Text
  1. '/**
  2. ' * AdminFinder
  3. ' *
  4. ' * @by         @79137913
  5. ' * @Ported by  Jovani Pérez Damián (@BlackBlex)
  6. ' *
  7. ' * ==============Information==============
  8. ' *      Filename: AdminFinder.cml
  9. ' * ---------------------------------------
  10. '*/
  11.  
  12. Importar "Cramel.cml"
  13. Importar "MSVBVM60\MSVBVM60.cml"
  14. Importar "Constantes.cml"
  15. Importar "APIS.cml"
  16. Importar "Archivo.cml"
  17. Importar "Consola.cml"
  18. Importar "HTTPRequest.cml"
  19.  
  20. Var cmd:Consola
  21. Var archivoC:ArchivoC
  22.  
  23. Var controlArchivo:Booleano
  24.  
  25. Var paths[], pathsFound:Cadena
  26. Var contenido, salida:Cadena
  27.  
  28. Crear archivoC
  29.     archivoC.abrir("paths.txt", GENERIC_READ, OPEN_EXISTING)
  30.     Si ( archivoC.conseguirPtr <> INVALID_HANDLE ) Entonces
  31.         contenido = archivoC.leer()
  32.         paths = Separar(contenido, CRLF)
  33.         controlArchivo = Verdad
  34.     SiNo
  35.         Mensaje("El archivo paths.txt no existe, favor de crearlo y poner su lista separada por linea")
  36.         controlArchivo = Falso
  37.     FinSi
  38.     archivoC.cerrar()
  39. Destruir archivoC
  40.  
  41. Var objetivo:Cadena
  42. Var correcto:Booleano
  43. correcto = Falso
  44.  
  45. Si ( controlArchivo ) Entonces
  46.     Crear cmd
  47.         cmd.establecerTitulo("AdminFinder by 79137913 ~ Ported to Cramel Console by BlackBlex")
  48.         cmd.escribirLinea(CRLF + "    /=======================\\")
  49.         cmd.escribirLinea("      Paths encontrados:" + EntCad(&paths))
  50.         cmd.escribirLinea("    \\=======================/" + CRLF)
  51.         Mientras correcto = Falso
  52.             cmd.escribir("(No incluya el http:// al inicio, ni el / al final)" + CRLF + "Ingrese el destino: ")
  53.             objetivo = cmd.leer
  54.             Si ( Buscar(objetivo, "http://") = Falso ) Entonces
  55.                 correcto = Verdad
  56.             FinSi
  57.         FinMientras
  58.         Si ( correcto ) Entonces        
  59.             Si ( buscarObjetivos ) Entonces
  60.                 cmd.limpiarConsola()
  61.                 cmd.escribirLinea(CRLF)
  62.                 cmd.escribirLinea("  URLS encontradas: ")
  63.                 cmd.escribir(pathsFound + CRLF)
  64.                 cmd.pausarConsola()
  65.             SiNo
  66.                 cmd.limpiarConsola()
  67.                 cmd.escribirLinea(CRLF)
  68.                 cmd.escribirLinea("  No se encontro ninguna url" + CRLF)
  69.                 cmd.pausarConsola()
  70.             FinSi
  71.         FinSi
  72.     Destruir cmd
  73. FinSi
  74.  
  75. Proc buscarObjetivos:Booleano
  76.     cmd.escribirLinea("  Examinando...")
  77.     Var request:HTTP
  78.     Var text:Cadena
  79.     Var id:Entero
  80.     Resultado = Falso
  81.     Crear request
  82.         id = 0
  83.         Contar id a &paths Paso 1
  84.             request.Metodo = "GET"
  85.             request.Puerto = INTERNET_DEFAULT_HTTP_PORT
  86.             request.Servidor = objetivo
  87.             request.Dirección = "/" + paths[id]
  88.             request.Agente = "RequestTest [GET]"
  89.  
  90.             Si ( request.Conectar ) Entonces
  91.                 Si ( request.Enviar ) Entonces
  92.                     cmd.escribir("    http://" + request.Servidor + request.Dirección + " ~ Estado: ")
  93.                     Si ( request.StatusCode = HTTP_STATUS_OK ) Entonces
  94.                         cmd.escribirLinea("[OK]")
  95.                         pathsFound = pathsFound + "    http://" + request.Servidor + request.Dirección + CRLF
  96.                         Resultado = Verdad
  97.                     SiNo
  98.                         cmd.escribirLinea("[FAILED]")
  99.                     FinSi
  100.                 FinSi
  101.             FinSi
  102.         Seguir
  103.     Destruir request
  104.     Pausar(2500)
  105. FinProc



12
Underc0de / Re:Desafío #7 - Viernes Negro
« en: Junio 02, 2017, 11:05:40 am »
Listo :D


6467e27af759b9d351c5842281b32fa997b42da8

13
Otros lenguajes / Re:[Cramel] Nueva versión + Ejemplo
« en: Mayo 17, 2017, 10:32:38 am »
Buen avance, genial.

14
Otros lenguajes / Re:[Cramel] Consola.cml | 4 de Marzo del 2017
« en: Abril 17, 2017, 12:24:02 pm »
Buenas, no me funciona en la última versión de cramel, me da error con la función Caracter().
Es fallo mío o por la versión del compilador.

Saludos.
Checa que guardes el archivo con una codificación que no rompa los acentos y caracteres especiales, ya que es ahí donde se me ocurre que este el error; ya que la función Carácter es de Cramel.

Yo suelo guardar los .cml con codificación Windows 1252 (CP-1252), ya que igual he tenido problemas gordos con este asunto >.<

Cualquier cosa avisa, para que haga pruebas.

Enviado desde mi MotoG3 mediante Tapatalk

15
Les traigo este código el cual agrega un set de componentes que complementará a su ventana.


Información
  • Compatible con Cramel: 2.0.0.362
  • Librerías requeridas: MSVBVM60.cml


Ese set contiene:
  • Botones
    • Radio
    • CheckBox
    • GroupBox
  • Etiquetas
  • Caja de texto
  • Barra de progreso
  • ComboBox
  • ListView

Todos los componentes tienen los siguientes métodos:
  • cambiarColorFondo(color:Entero) - Cambiamos el color del fondo del componente
  • cambiarColorLetra(color:Entero) - Cambiamos el color de la letra del componente
  • cambiarTexto(nuevo:Cadena) - Cambiamos el texto del componente
  • cambiarTamaño(ancho, alto:Entero) - Cambiamos el tamaño del componente
  • cambiarPosicion(x, y:Entero) - Cambiamos la posición del componente

Todos los componentes tienen las siguientes propiedades:
  • Tipo - Establece o devuelve el tipo de componente | Por lo general su uso es para devolver el tipo, ya que, ya está establecido el tipo de componente, a no ser que se cree uno nuevo.
  • Texto - Establece o devuelve el texto que contiene el componente
  • ColorLetra - Devuelve el color de letra que tiene el componente
  • ColorFondo - Devuelve el color de fondo que tiene el componente
  • hWnd - Establece o devuelve el puntero del componente
  • Padre - Establece o devuelve el puntero padre del componente | Su uso se aplica cuando quieres relacionar o agregar componentes a tu ventana
  • DC - Establece o devuelve el contexto de dispositivo del componente
  • Enfocar - Establece o devuelve si el componente gana Focus
  • Centrar - Establece o devuelve si la ventana debe estar centrada en la pantalla
  • Deshabilitado - Establece o devuelve si el componente estará deshabilidado
  • Visible - Establece o devuelve si el componente estará visible
  • Alto - Establece o devuelve el alto del componente
  • Ancho - Establece o devuelve el ancho del componente
  • PosX - Establece o devuelve la posición X del componente
  • PosY - Establece o devuelve la posición Y del componente

  • Se puede poner un icono, solo basta con poner el archivo "icon.ico" en el directorio de tu proyecto.

Aquí un ejemplo de una ventana con todos los componentes, y una segunda ventana.




Código: Text
  1. Importar "Cramel.cml"
  2. Importar "MSVBVM60\MSVBVM60.cml"
  3. Importar "Interfaz\Interfaz.cml"
  4.  
  5. Var frame, frameNuevo:CMLframe
  6. Var botonExaminar, botonNuevo:CMLBotón
  7. Var checkboxReemplazar:CMLCheckbox
  8. Var grupoReemplazar:CMLGroupbox
  9. Var radioReemplazar, radioNoReemplazar:CMLRadiobotón
  10. Var etiquetaElección, etiquetaProgreso, etiquetaNuevo:CMLEtiqueta
  11. Var comboboxOpciones:CMLCombobox
  12. Var barraProgresoTest, barraProgresoMarquee, barraProgresoVertical:CMLBarraprogreso
  13. Var cajaTextoPrueba, cajaTextoContra:CMLCajatexto
  14. Var listViewTest:CMLListview
  15.  
  16. Proc alertaMensaje(hWnd:Entero)
  17.     Mensaje("Holaa " + EntCad(hWnd))
  18. FinProc
  19.  
  20. Proc alertaBotonExaminar(hWnd:Entero,Botón:Byte,Presionado:Booleano,X,Y:Entero)
  21.     Seleccionar Botón
  22.         Caso BOTON_IZQUIERDO
  23.             Seleccionar Presionado
  24.                 Caso Falso
  25.                     Mensaje("Botón izquierdo presionado")
  26.                     Mensaje("El checkbox esta: " + EntCad(checkboxReemplazar.estaSeleccionado) )
  27.             FinSeleccionar
  28.         Caso BOTON_DERECHO
  29.             Seleccionar Presionado
  30.                 Caso Falso
  31.                     Mensaje("Botón derecho presionado")
  32.                     Mensaje(cajaTextoPrueba.cTexto)
  33.                     cajaTextoPrueba.Limite = 20
  34.                     cajaTextoPrueba.agrTexto = " agregado"
  35.             FinSeleccionar
  36.         Caso BOTON_CENTRAL
  37.             Seleccionar Presionado
  38.                 Caso Falso
  39.                     Mensaje("Botón central presionado")
  40.                     Mensaje("Carácter: " + Carácter(cajaTextoContra.ContraseñaCaracter))
  41.             FinSeleccionar
  42.     FinSeleccionar
  43. FinProc
  44.  
  45. Proc alertaComboBox(hWnd:Entero, Referencia Item:GUI_COMBOBOX_ITEM_INFO)
  46.     Mensaje("Item #" + EntCad(Item.Posición) + " seleccionado: " + Item.Item)
  47. FinProc
  48.  
  49. Proc listViewTestEventClic(hWnd:Entero,Botón:Byte,Presionado:Booleano,X,Y:Entero,Referencia ItemInfo:GUI_LISTVIEW_ITEM_INFO)
  50.     Seleccionar Botón
  51.         Caso BOTON_DERECHO, BOTON_IZQUIERDO
  52.             Seleccionar Presionado
  53.                 Caso Verdad
  54.                     Mensaje("Posición: " + EntCad(ItemInfo.Columna) + CRLF + "Item: " + EntCad(ItemInfo.Item))
  55.             FinSeleccionar
  56.     FinSeleccionar
  57. FinProc
  58.  
  59. Crear frame
  60. Crear frameNuevo
  61. Crear botonExaminar
  62. Crear botonNuevo
  63. Crear grupoReemplazar
  64. Crear checkboxReemplazar
  65. Crear radioReemplazar
  66. Crear radioNoReemplazar
  67. Crear etiquetaElección
  68. Crear etiquetaProgreso
  69. Crear etiquetaNuevo
  70. Crear comboboxOpciones
  71. Crear barraProgresoTest
  72. Crear barraProgresoMarquee
  73. Crear barraProgresoVertical
  74. Crear cajaTextoPrueba
  75. Crear cajaTextoContra
  76. Crear listViewTest
  77.  
  78.     frame.Texto = "CMLFrame clase"
  79.     frame.Ancho = 400
  80.     frame.Alto = 400
  81.     frame.Padre = 0
  82.     frame.Centrar = 1
  83.     frame.construir(WS_OVERLAPPED+WS_CAPTION+WS_SYSMENU)
  84.  
  85.     frameNuevo.Texto = "2do Frame"
  86.     frameNuevo.Ancho = 550
  87.     frameNuevo.Alto = 400
  88.     frameNuevo.Padre = 0
  89.     frameNuevo.Centrar = Verdad
  90.     frameNuevo.construir(WS_OVERLAPPED+WS_CAPTION+WS_SYSMENU)
  91.  
  92.     etiquetaElección.Texto = "\x191Qué quieres hacer?"
  93.     etiquetaElección.PosX  = 10
  94.     etiquetaElección.PosY  = 10
  95.     etiquetaElección.Ancho = 150
  96.     etiquetaElección.Alto  = 30
  97.     etiquetaElección.Padre = frame.hWnd
  98.     etiquetaElección.construir()
  99.  
  100.     etiquetaNuevo.Texto = "Hola :D"
  101.     etiquetaNuevo.PosX  = 10
  102.     etiquetaNuevo.PosY  = 10
  103.     etiquetaNuevo.Ancho = frameNuevo.Ancho - 30
  104.     etiquetaNuevo.Alto  = 20
  105.     etiquetaNuevo.Padre = frameNuevo.hWnd
  106.     etiquetaNuevo.fuente.Nombre = "Roboto light"
  107.     etiquetaNuevo.fuente.Tamaño = 14
  108.     etiquetaNuevo.fuente.Bold = Verdad
  109.     etiquetaNuevo.construir(ES_CENTER)
  110.  
  111.     listViewTest.PosX  = 10
  112.     listViewTest.PosY  = (etiquetaNuevo.PosY + etiquetaNuevo.Alto) + 5
  113.     listViewTest.Ancho = frameNuevo.Ancho - 30
  114.     listViewTest.Alto  = (frameNuevo.Alto - listViewTest.PosY) - 50
  115.     listViewTest.Padre = frameNuevo.hWnd
  116.     listViewTest.fuente.Nombre = "Arial"
  117.     listViewTest.fuente.Tamaño = 11
  118.     listViewTest.construir()
  119.  
  120.     Var listColumnas[]:INFO_COLUMNA
  121.     ReDim listColumnas, 5
  122.  
  123.     listColumnas[0].Indice   = 0
  124.     listColumnas[0].Ancho    = (listViewTest.Ancho/5)
  125.     listColumnas[0].Posición = LVCFMT_LEFT
  126.     listColumnas[0].Texto    = "Nombre"
  127.  
  128.     listColumnas[1].Indice   = 1
  129.     listColumnas[1].Ancho    = (listViewTest.Ancho/5)
  130.     listColumnas[1].Posición = LVCFMT_CENTER
  131.     listColumnas[1].Texto    = "Dirección IP"
  132.  
  133.     listColumnas[2].Indice   = 2
  134.     listColumnas[2].Ancho    = (listViewTest.Ancho/5)
  135.     listColumnas[2].Posición = LVCFMT_CENTER
  136.     listColumnas[2].Texto    = "[email protected]"
  137.  
  138.     listColumnas[3].Indice   = 3
  139.     listColumnas[3].Ancho    = (listViewTest.Ancho/5)
  140.     listColumnas[3].Posición = LVCFMT_CENTER
  141.     listColumnas[3].Texto    = "SO"
  142.  
  143.     listColumnas[4].Indice   = 4
  144.     listColumnas[4].Ancho    = (listViewTest.Ancho/5)
  145.     listColumnas[4].Posición = LVCFMT_CENTER
  146.     listColumnas[4].Texto    = "Paí[email protected]"
  147.  
  148.     listViewTest.insertarColumnas(listColumnas)
  149.  
  150.     Var listItems:INFO_ITEM
  151.     ReDim listItems.Texto, 5
  152.  
  153.     listItems.Texto[0] = "Test"
  154.     listItems.Texto[1] = "Test1"
  155.     listItems.Texto[2] = "Test2"
  156.     listItems.Texto[3] = "Test3"
  157.     listItems.Texto[4] = "Test4"
  158.     listItems.Indice   = 0
  159.  
  160.     Var listItems2:INFO_ITEM
  161.     ReDim listItems2.Texto, 5
  162.  
  163.     listItems2.Texto[0] = "Test2"
  164.     listItems2.Texto[1] = "Test21"
  165.     listItems2.Texto[2] = "Test22"
  166.     listItems2.Texto[3] = "Test23"
  167.     listItems2.Texto[4] = "Test24"
  168.     listItems2.Indice   = 1
  169.  
  170.     listViewTest.insertarItem(listItems)
  171.     listViewTest.insertarItem(listItems2)
  172.  
  173.     comboboxOpciones.PosX = 170
  174.     comboboxOpciones.PosY = 10
  175.     comboboxOpciones.Ancho = 150
  176.     comboboxOpciones.Alto = 20
  177.     comboboxOpciones.Padre = frame.hWnd
  178.     comboboxOpciones.eventos.ComboBox.Selecció[email protected] = [email protected]
  179.     comboboxOpciones.construir(CBS_DROPDOWNLIST)
  180.  
  181.     comboboxOpciones.agregarItem("Hola")
  182.     comboboxOpciones.agregarItem("\x191Como estas?")
  183.     comboboxOpciones.agregarItem("Bien")
  184.     comboboxOpciones.agregarItem("Genial")
  185.     comboboxOpciones.agregarItem("y tu??")
  186.     comboboxOpciones.agregarItem("Bien, igual")
  187.     comboboxOpciones.agregarItem("Que padre")
  188.  
  189.     botonExaminar.Texto = "Examinar"
  190.     botonExaminar.PosX  = 10
  191.     botonExaminar.PosY  = 30
  192.     botonExaminar.Ancho = 100
  193.     botonExaminar.Alto  = 50
  194.     botonExaminar.Padre = frame.hWnd
  195.     botonExaminar.construir()
  196.  
  197.     botonNuevo.Texto = "Nueva ventana"
  198.     botonNuevo.PosX  = 10
  199.     botonNuevo.PosY  = 300
  200.     botonNuevo.Ancho = 100
  201.     botonNuevo.Alto  = 50
  202.     botonNuevo.Padre = frame.hWnd
  203.     botonNuevo.construir()
  204.  
  205.     checkboxReemplazar.Texto = "Reemplazar archivo"
  206.     checkboxReemplazar.PosX  = 10
  207.     checkboxReemplazar.PosY  = 90
  208.     checkboxReemplazar.Ancho = 200
  209.     checkboxReemplazar.Alto  = 30
  210.     checkboxReemplazar.Padre = frame.hWnd
  211.     checkboxReemplazar.Deshabilitado = Verdad
  212.     checkboxReemplazar.construir()
  213.  
  214.     grupoReemplazar.Texto = "Opciones"
  215.     grupoReemplazar.PosX  = 10
  216.     grupoReemplazar.PosY  = 130
  217.     grupoReemplazar.Ancho = 270
  218.     grupoReemplazar.Alto  = 50
  219.     grupoReemplazar.Padre = frame.hWnd
  220.     grupoReemplazar.construir()
  221.  
  222.         radioReemplazar.Texto = "Reemplazar archivo"
  223.         radioReemplazar.PosX  = 20
  224.         radioReemplazar.PosY  = 145
  225.         radioReemplazar.Ancho = 110
  226.         radioReemplazar.Alto  = 30
  227.         radioReemplazar.Padre = frame.hWnd
  228.         radioReemplazar.construir()
  229.  
  230.         radioNoReemplazar.Texto = "No reemplazar archivo"
  231.         radioNoReemplazar.PosX  = 140
  232.         radioNoReemplazar.PosY  = 145
  233.         radioNoReemplazar.Ancho = 130
  234.         radioNoReemplazar.Alto  = 30
  235.         radioNoReemplazar.Padre = frame.hWnd
  236.         radioNoReemplazar.construir()
  237.  
  238.     grupoReemplazar.cerrar()
  239.  
  240.     barraProgresoTest.PosX  = 10
  241.     barraProgresoTest.PosY  = 190
  242.     barraProgresoTest.Ancho = 150
  243.     barraProgresoTest.Alto  = 30
  244.     barraProgresoTest.Padre = frame.hWnd
  245.     barraProgresoTest.construir()
  246.     barraProgresoTest.empezar([email protected])
  247.    
  248.     etiquetaProgreso.Texto = "0 %"
  249.     etiquetaProgreso.PosX  = 10
  250.     etiquetaProgreso.PosY  = 230
  251.     etiquetaProgreso.Ancho = 150
  252.     etiquetaProgreso.Alto  = 30
  253.     etiquetaProgreso.Padre = frame.hWnd
  254.     etiquetaProgreso.construir(SS_CENTER)
  255.  
  256.     barraProgresoMarquee.PosX  = 170
  257.     barraProgresoMarquee.PosY  = 190
  258.     barraProgresoMarquee.Ancho = 150
  259.     barraProgresoMarquee.Alto  = 30
  260.     barraProgresoMarquee.Padre = frame.hWnd
  261.     barraProgresoMarquee.construir(PBS_MARQUEE)
  262.     barraProgresoMarquee.Marquee = 20
  263.  
  264.     barraProgresoVertical.PosX  = 330
  265.     barraProgresoVertical.PosY  = 70
  266.     barraProgresoVertical.Ancho = 30
  267.     barraProgresoVertical.Alto  = 150
  268.     barraProgresoVertical.Padre = frame.hWnd
  269.     barraProgresoVertical.construir(PBS_VERTICAL)
  270.     barraProgresoVertical.empezar([email protected])
  271.  
  272.     cajaTextoPrueba.Texto = "Holaa"
  273.     cajaTextoPrueba.PosX  = 10
  274.     cajaTextoPrueba.PosY  = 270
  275.     cajaTextoPrueba.Ancho = 150
  276.     cajaTextoPrueba.Alto  = 20
  277.     cajaTextoPrueba.Padre = frame.hWnd
  278.     cajaTextoPrueba.construir()
  279.  
  280.     cajaTextoPrueba.Limite = 10
  281.  
  282.     cajaTextoContra.Texto = "Password"
  283.     cajaTextoContra.PosX  = 170
  284.     cajaTextoContra.PosY  = 270
  285.     cajaTextoContra.Ancho = 150
  286.     cajaTextoContra.Alto  = 20
  287.     cajaTextoContra.Padre = frame.hWnd
  288.     cajaTextoContra.construir(ES_PASSWORD)
  289.     cajaTextoContra.ContraseñaCaracter = ASCII("+")
  290.  
  291.     frame.mostrar()
  292.     'Pausar(2500)
  293.     'Mensaje("Cambio")
  294.     'etiquetaElección.cambiarTexto("Groo")
  295.     frame.correr()
  296.  
  297. Proc nuevaVentana NoResultado
  298.     frameNuevo.mostrar()
  299.     frameNuevo.correr()
  300. FinProc
  301.  
  302. Proc ProgresoBarra():Entero NoResultado
  303.     Var rango:PBRANGE
  304.     Var i:Entero
  305.     rango = barraProgresoTest.Rango
  306.     Mientras i <= rango.iHigh
  307.         barraProgresoTest.Progreso = i
  308.         'etiquetaProgreso.cambiarTexto(EntCad(barraProgresoTest.Progreso) + " %")
  309.         Pausar(50)
  310.         i = i + 1
  311.     FinMientras
  312.     barraProgresoMarquee.MarqueeStop
  313. FinProc
  314.  
  315. Proc ProgresoBarraVertical():Entero NoResultado
  316.     Var rango:PBRANGE
  317.     Var i:Entero
  318.     rango = barraProgresoVertical.Rango
  319.     Mientras i <= rango.iHigh
  320.         barraProgresoVertical.Progreso = i
  321.         Pausar(150)
  322.         i = i + 1
  323.     FinMientras
  324. FinProc
  325.  
  326. Destruir listViewTest
  327. Destruir cajaTextoContra
  328. Destruir cajaTextoPrueba
  329. Destruir barraProgresoVertical
  330. Destruir barraProgresoMarquee
  331. Destruir barraProgresoTest
  332. Destruir comboboxOpciones
  333. Destruir etiquetaNuevo
  334. Destruir etiquetaProgreso
  335. Destruir etiquetaElección
  336. Destruir radioNoReemplazar
  337. Destruir radioReemplazar
  338. Destruir checkboxReemplazar
  339. Destruir grupoReemplazar
  340. Destruir botonNuevo
  341. Destruir botonExaminar
  342. Destruir frameNuevo
  343. Destruir frame

OJO:
El proyecto debe tener un archivo .manifest para su correcto funcionamiento por ende crean un archivo con: "el nombre de su ejecutable" seguido de ".exe.manifest"

Y ponen esto de contenido:
Código: Text
  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  2.     <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  3.         <assemblyIdentity
  4.             version="1.0.0.0"
  5.             processorArchitecture="X86"
  6.             name="CramelFrame"
  7.             type="win32"
  8.         />
  9.         <description></description>
  10.         <dependency>
  11.         <dependentAssembly>
  12.         <assemblyIdentity
  13.             type="win32"
  14.             name="Microsoft.Windows.Common-Controls"
  15.             version="6.0.0.0"
  16.             processorArchitecture="X86"
  17.             publicKeyToken="6595b64144ccf1df"
  18.             language="*"
  19.         />
  20.         </dependentAssembly>
  21.     </dependency>
  22. </assembly>


Descarga de los componentes


Descarga -> Descargan el archivo, lo descomprimen y lo pegan en el directorio de las Libs

1 de julio del 2017
  • Se paso a crear una clase para cada componente, como para la ventana
  • Corregido error en los eventos del botón
  • Actualizada para la versión 2.0.362 - No funciona en anteriores
5 de julio del 2017
  • Se agregó un nuevo componente, el Listview
  • Se corrigió errores en la clase Información
  • Errores en el componente CMLFrame arreglado

Cualquier sugerencia, o error, comenten.

Si quieren que haga algún componente personalizado para Cramel comenten.

16
Dejo el source del programa, no tengo el tiempo como para seguir el desarrollo de los controles del formulario.

Aportazo Master!!!
Lo he estado esperando con ansias.
Pero al momento de ejecutar el source del File Pumper me aparece este error.

Podras echarme una mano??
Saludos
Que versión de cramel usas?

Yo lo hice con la ultima.

Enviado desde mi MotoG3 mediante Tapatalk


17
Dejo el source del programa, no tengo el tiempo como para seguir el desarrollo de los controles del formulario.

18
Hola, esta vez les traigo un File pumper, el cual te permitirá añadirle peso a cualquier archivo.

Imágenes:





Descarga:
Mega
VirusTotal

PD: no libero el código porque como pudieron observar y observarán, falta todavía pulir el diseño, apare del diseño de las etiquetas, botones, grupo, radios y checkbox, quien me pueda ayudar en estás partes bienvenido; una vez que pula estos detalles liberaré el código de este programa y de todos los componentes usados en el.

Por falta de tiempo dejo el source a como estaba cuando publique el programa:
Mega

Cualquier error, sugerencia o duda, comenten.

Agradecimientos a Doddy, por la forma de agregarle peso al archivo. :P

19
Dudas y pedidos generales / Re:Kali Linux Android
« en: Marzo 14, 2017, 05:17:06 pm »
Hola, quería preguntar si ¿alguien sabe como instalar Kali Linux para android?, por lo que he visto si se puede pero no hay una fuente que me diga de donde descargarlo o como encontrarlo. Gracias.

Saludos

Tengo entendido que solo es para los nexus, no he visto que lo hayan liberado para otros modelos.

20
Dudas y pedidos generales / Re:Conexion a internet a traves de WiFi
« en: Marzo 08, 2017, 05:29:46 pm »
Buenas tardes a todos;

Tengo Kali 2.0 virtualizado con VB y no puedo conectarme a Internet a través del WiFi, ya que ni si quiera me lo registra. Me pasó lo mismo cuando compartía ubuntu con windows 10. Estuve buscando por todas partes pero nadie sabe ayudarme. No se si sera cuestión de instalar un driver que le falta, o quizás un problema de la tarjeta de red.

Gracias de antemano.
Necesitas una tarjeta por USB, si quieres usar el WiFi en una maquina virtualizada.

Enviado desde mi MotoG3 mediante Tapatalk


Páginas: [1] 2 3