domingo, 28 de junio de 2015

Como usar Scintilla

Scintilla es un control de edición de texto avanzado, por lo que no es simple utilizarlo; tiene sus dificultades y defectos, pero es muy potente y util para programadores.

Con este control se han creado programas como SciTE, Eclipse, Notepad++ y muchisimos otros.

En esta entrada les voy a enseñar a como utilizar Scintilla, aunque sea de lo mas basico.
Primero tenemos que descargar Scintilla (SciLexer.dll), desde aca: Scintilla Oficial


Esta DLL debe estar junto a nuestro proyecto.

Para utilizar el control hay que comenzar registrandolo, pero ¿como lo hago? pues muy facil. usando la API "LoadLibrary".

LoadLibrary("SciLexer.dll")

Y se registra automaticamente, si... por si solo.
Ahora, vamos a crear el control Scintilla en el formulario, el ejemplo siguiente sera en el lenguaje de programación Pauscal.

Var X,Y,Width,Height,hWndPadre,Modulo,PtrControl:Entero
X = 0             ' Posición X
Y = 0             ' Posición Y
Width = 400  ' Ancho
Height = 400  ' Alto
hWndPadre = Padre.hWnd ' Puntero a la ventana padre
Modulo = GetModuleHandle("") ' Modulo del programa
PtrControl = CreateWindowEx(WS_EX_CLIENTEDGE,"Scintilla","Texto de ejemplo >:(",WS_CHILD+WS_VISIBLE,X,Y,Width,Height,hWndPadre,0,Modulo,0)

Y listo, ya tienen su control Scintilla en su formulario.
Ahora, quiero hacer que el control Scintilla haga algo, ¿Como hago? facil, utilizamos la siempre util y entretenida API "SendMessage", la lista completa de mensajes esta en la pagina oficia de este control, y se llama Scintilla Doc.
Un ejemplo simple envio de mensajes el siguiente.

SendMessage(PtrControl,SCI_CALLTIPSHOW,0,CadPtr("Hola Mundo!"))

Veran como se agrega una pequeña notificación con el mensaje "Hola Mundo!" en la linea número cero.
Pueden la lista de mensajes completa de mi repositorio en GitHub.

Si se quedaron con "hambre" en esta entrada, por favor no duden en comentar.

Saludos!

sábado, 20 de diciembre de 2014

Buguear MessageBoxA

Bueno, hoy les traigo un interesante truco con la API MessageBox que encontré mientras testeaba un código.

Se puede modificar la visualización del texto establecido en la API modificando su bandera con un valor mayor o menor (Max: 5 Min: 5) a 2737476.

Por ejemplo.

MessageBoxA(0,"Título","Texto",2737476)

Supongamos que tenemos un mensaje tipico, un "Hola Mundo" por ejemplo.

Mensaje("Hola Mundo",,48)


Con el valor 2737476 se ve asi

Lo interesante de este bug (y que me acabo de enterar) no es el cambio de visualización, Si No que no puede ser capturado por el capturador de imágenes FastStone Capture en modo Capture Window / Object, lo que sugiere una vulnerabilidad en captura de ventana.

Esto puede ser irrelevante para muchos, pero tal bug bien utilizado puede ser una buena herramienta para hackear de alguna u otra manera el ordenador de alguien.

Probado en Windows 7 Ultimate - Sp 1 - 32 Bits.

Un saludo!

jueves, 6 de noviembre de 2014

Manual de Pauscal

Bueno, como bien dice el titulo, hice un manual para aprender a programar en Pauscal desde 0, si quieres leer este manual que es gratis solamente has clic en el siguiente enlace.


Si tienes alguna pregunta, por favor no dudes en comentar o simplemente entrar al foro oficial del lenguaje en español.


¡Saludos!