// anon.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <windows.h>

int main(int argc, char* argv[])
{
	char destino[128]="";
	char texto[128]="";
	char texto2[128];
	char mensaje[128]="";
	char *puntero;
	BYTE palabras = 3;
	DWORD len;
	
	puts("Anon - SISTEMAS O.R.P. - 2008");
	/*
	Si se envían menos de 3 argumentos (4 con el ejecutable) mostramos
	información de como ejecutarlo.
	*/
	if(argc < 4)
	{
		puts("El formato es: anon <origen> <destino> <mensaje>");
		return 1;
	}

	// Generamos el nombre de la tubería.
	strcat(destino, "\\\\");
	strcat(destino, argv[2]);
	strcat(destino,"\\MAILSLOT\\MESSNGR");

	/*
	El resto de argumentos son parte del mensaje y lo copiamos a una
	cadena única.
	*/
	for(;palabras < argc; palabras++)
	{
		strcat(texto, argv[palabras]);
		strcat(texto, " ");
	}

	// Convertimos los carácteres a ANSI
	CharToOemBuff(texto, texto2, strlen(texto) + 1);
	// Generamos el formarto de la cadena del mensaje
	puntero = mensaje;
	strcpy(mensaje,argv[1]);
	puntero += strlen(argv[1]) + 1;
	strcpy(puntero,argv[2]);
	puntero += strlen(argv[2]) + 1;
	strcpy(puntero,texto2);
	puntero += strlen(texto2) + 1;

	// Abrimos la tubería
	HANDLE handle= CreateFile(destino,
	GENERIC_WRITE,
	FILE_SHARE_READ, 0,
	OPEN_EXISTING,
	FILE_ATTRIBUTE_NORMAL, 0);

	// Si hemos abierto correctamente la tubería
	if(handle != INVALID_HANDLE_VALUE)
	{
		// Escribimos el mensaje formateado
		WriteFile(handle, mensaje, puntero - mensaje, &len, NULL);
		// Cerramos el handle
		CloseHandle(handle);
		printf("Mensaje enviado a %s correctamente\n", argv[2]);
		
	}
	return 0;
}

