Cuando iniciamos una aplicación de consola por lo general a veces queremos ir ingresando información y este programa los procesos, pero a veces la necesidad de que se cree una aplicación consola es de que ejecuta un procesos o varios procesos en particular y se fue, no necesitamos que este ventana siempre pertenezca ahí ejecutándose, por lo cual para evitar que una persona la cierra tenia algunas opciones:
1.- Crear un Hilo y si el usuario daba clik en cerrar el hilo haría el resto
(Falla por que al ser una aplicación de consola si la cierras también cierras el hilo por lo cual esta no fue una solución valida).
2.- Crear un servicio web y la aplicación de consola.
Dentro de la Aplicación de Consola hacia referencia al servicio web, dentro del servicio web estaba un hilo que ejecutaba el proceso que yo quería.
(Funciono pero una vez que se cerraba el servicio web necesitaba hacer otras cosas y como que me ataba a crear varios metodos para hacer una y otra cosa, por lo tanto no seguí en esto).
3.- (Solución al fin) La mas fácil tratar de ocultar la aplicación de consola luego de que se inicialice el proceso.
(Esta en mi caso fue la mejor porque solo aumente tres líneas de código a la aplicación de consola y el resto del procesos no le hice nada).
Bueno, aquí va la solución de ocultar una aplicación de consola.
Gracias al blog de http://emilioj.wordpress.com/2008/04/17/ocultar-la-consola-c/
Bueno aquí va el codigo:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Diagnostics;
using System.Threading;
namespace OcultarConsola
{
class Program
{
[System.Runtime.InteropServices.DllImport("user32.dll")]
private extern static int ShowWindow(System.IntPtr hWnd, int nCmdShow);
static void Main(string[] args)
{
ShowWindow(Process.GetCurrentProcess().MainWindowHandle, 0);
//AQUÍ EL CÓDIGO
// Thread.Sleep(System.Threading.Timeout.Infinite);
escribe();
}
private static void escribe()
{
StreamWriter VLO_ArchivoLog = File.AppendText("D:\\prueba.txt");
VLO_ArchivoLog.WriteLine(Process.GetCurrentProcess().MachineName);
VLO_ArchivoLog.WriteLine(Process.GetCurrentProcess().MainModule.FileName);
VLO_ArchivoLog.WriteLine(Process.GetCurrentProcess().Modules[0].FileName);
VLO_ArchivoLog.WriteLine(Process.GetCurrentProcess().ProcessName);
VLO_ArchivoLog.WriteLine(Process.GetCurrentProcess().SessionId);
VLO_ArchivoLog.WriteLine(Process.GetCurrentProcess().Id);
VLO_ArchivoLog.WriteLine(Process.GetCurrentProcess().TotalProcessorTime.ToString());
for (int i = 0; i <>
1 comentario:
men mcuash gracias sos el mejor me salvaste la vida
Publicar un comentario