sábado, 22 de enero de 2011

NoMoreClicks: Una broma rápida en C#

Se me ha ocurrido que con pocas líneas de código podemos gastar una pequeña broma a nuestro compañero de oficina, clase,etc.

La idea es crear un formulario transparente, sin bordes, que ocupe toda la pantalla y no aparezca en la barra de herramientas al ejecutarlo. Por cada click con el ratón por parte del usuario, la aplicación invisible le devuelve un mensaje con el texto que hayamos predeterminado. También pensé en que no pudiese ser cerrado al pulsar las teclas Alt+F4.

Para ello se han de cambiar unas cuantas propiedades del Form, crear un array de cadenas de texto con los mensajes que queramos y un par de eventos para capturar los clicks del ratón y el que no pueda ser cerrada "fácilmente".

Aquí os dejo el código:
using System;
using System.Windows.Forms;
using System.Net;

namespace NoMoreClicks
{
public partial class Form1 : Form
{
//Declaramos un array de cadena y lo inicializamos con los mensajes que queramos mostrar por cada click
string[] mensajes = { "No pinches.", "¡Qué no pinches!", "¿Por qué pinchas?", "¿Cómo hay que decírtelo?", "¿No vas a parar?"};

//Un entero que almacenará en que posición del array estaremos
int contador = 0;



public Form1()
{

InitializeComponent();
}

//Evento click del Form
private void Form1_Click(object sender, EventArgs e)
{

try
{
//Mostramos el mensaje correspondiente e incrementamos el contador para pasar al siguiente mensaje
MessageBox.Show(mensajes[contador],Dns.GetHostName());
contador++;
}
catch
{
//No quedan más mensajes por mostrar y a partir de ese momento sólo se mostrará el siguiente
MessageBox.Show("No insistas", Dns.GetHostName());
}

}

private void Form1_Load(object sender, EventArgs e)
{
//Cambiamos unas cuantas propiedades del Form para que sea transparente, pantalla completa, sin bordes, etc
this.Opacity = 0.01;
this.ShowInTaskbar = false;
this.ShowIcon = false;
this.FormBorderStyle = FormBorderStyle.None;
this.Height=Screen.PrimaryScreen.Bounds.Height;
this.Width = Screen.PrimaryScreen.Bounds.Width;
this.Top = 0;
this.Left = 0;
}

//Evento FormClosing para que no puedan cerrar la aplicación con Alt+F4 por ejemplo
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
}


}
}
Probadlo y ya me comentaréis si hubo éxito o no.

He pasado el código por el foro de Flu Project por si les interesa y lo incluyen en su aplicación. ¿Qué no sabes qué es eso de Flu Project? Entra en su web y echa un vistazo.

Si alguien quiere probarla directamente:

Descargar NoMoreClicks.
Contraseña: 45p4r4gu5

MD5: e0876057fdd1ff2645386cb402bc6172
SHA-1: 1fd3dda4f9522d0958125811c0e044180861d5c3

No hay comentarios: