|
LINK:CREANDO UN SERVICIO DE WINDOWS CON VISUAL BASIC Me encuentro escribiendo este nuevo artículo para todos los lectores de esta página. Este articulo trata de cómo crear un servicio de Windows con Visual Studio en esta ocasión los explicare con C# espero a alguien le pueda servir. Lo primero que necesitamos hacer es agregar un nuevo proyecto pero esta ves seleccionaremos un servicio de Windows.
Se abra creado nuestro proyecto. Para hacer que funcione nuestro Servicio es necesario Instalarlo en el Sistema, por lo cual nuestro siguiente paso es agregar un instalador a nuestro servicio. Para este paso deberemos darle click derecho dentro de la parte del formulario de nuestro Servicio y aparecerá una pantalla en la cual daremos click en Agregar Instalador. Se crearan dos componentes al agregar nuestro instalador que son los siguientes
Hasta estos momentos contaremos con dos clases: ProjectInstaller Service1 Nota: Podrán cambiar el nombre de sus clases, para mayor entendimiento las dejare como las da por defecto, hasta estos momentos todos deberemos de contar con estos elementos en nuestro explorador de soluciones. Solo nos ara falta agregar un ultimo elementó a nuestro proyecto, este elemento es conocido como timer. No es el timer que nos da por defecto Visual Studio, este timer se deberá de agregar como un elemento a nuestro cuadro de herramientas. Lo primero que deberemos hacer es colocarnos en el cuadro de herramientas de nuestro proyectó, daremos click derecho y seleccionaremos la opción de Elegir Elementos.
Nos aparecerá una pantalla de componentes donde deberemos de agregar el elemento timer, con el espacio de nombres System.Timers, lo seleccionamos y damos click en aceptar. Se abra agregado nuestro componente a nuestra caja de herramientas. Ya habremos agregado todos los elementos para que funcione nuestro Windows Services ahora empecemos a programarlo para que funcione. Empecemos con el código del Instalador. using System; using System.Collections.Generic; using System.ComponentModel; using System.Configuration.Install;
namespace WindowsService1 { [RunInstaller(true)] public partial class ProjectInstaller : Installer { public ProjectInstaller() { InitializeComponent(); //Agregue el código de inicialización después de llamar a InitializeComponent } } } Lo primero que debemos de hacer es importar la clase System.ServiceProcess using System.ServiceProcess; Después de eso debemos de indicar de qué forma arrancara el servicio. ServiceProcessInstaller proceso = new ServiceProcessInstaller(); proceso.Account = ServiceAccount.LocalService; Puedes arrancar el servicio de las siguientes Formas Servicio Local Sistema Local Servicio de Red Usuario Después de indicar la forma en la que se Registrara el Servicio, es necesario indicar como se va iniciar el proceso de la siguiente forma: ServiceInstaller servicio = new ServiceInstaller(); servicio.StartType = ServiceStartMode.Automatic; Los servicios se pueden iniciar de la siguiente forma: Automática: Deshabilitada: Manual: Después de indicar de que forma inicializara y en que forma correrá es necesario indicarle un nombre a nuestro servicio de la siguiente forma. servicio.ServiceName="MyServicio"; servicio.DisplayName ="MyServicio"; Una ves indicando los detalles de nuestro servicio como ultimo paso agregamos nuestros objetos a el instalador. Installers.Add(proceso); Installers.Add(servicio); Hemos acabado de programar nuestro instalador, este es el código completo de lo que acabamos de hacer. using System; using System.Collections.Generic; using System.ComponentModel; using System.Configuration.Install; using System.ServiceProcess;
namespace WindowsService1 { [RunInstaller(true)] public partial class ProjectInstaller : Installer { public ProjectInstaller() { InitializeComponent(); ServiceProcessInstaller proceso = new ServiceProcessInstaller(); ServiceInstaller servicio =new ServiceInstaller(); proceso.Account = ServiceAccount.LocalService; servicio.StartType = ServiceStartMode.Automatic; servicio.ServiceName="MyServicio"; servicio.DisplayName ="MyServicio"; Installers.Add(proceso); Installers.Add(servicio); } } } Ahora necesitamos programar lo que hará nuestro servicio, este es el código sin programar de nuestro servicio. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.ServiceProcess; using System.Text;
namespace WindowsService1 { public partial class Service1 : ServiceBase { public Service1() { InitializeComponent(); }
protected override void OnStart(string[] args) { // TODO: agregar código aquí para iniciar el servicio. }
protected override void OnStop() { // TODO: agregar código aquí para realizar cualquier anulación necesaria para detener el servicio. } } } Recuerdan que agregamos un Timer a nuestro Formulario de nuestro Servicio, pues es momento de hacer doble click en el para programar dentro del evento Timer_Elapsed este es el código de nuestro servicio. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.ServiceProcess; using System.Text;
namespace WindowsService1 { public partial class Service1 : ServiceBase { public Service1() { InitializeComponent(); }
protected override void OnStart(string[] args) { // TODO: agregar código aquí para iniciar el servicio. }
protected override void OnStop() { // TODO: agregar código aquí para realizar cualquier anulación necesaria para detener el servicio. }
private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e) {
} } } Hasta este momento es hora de que utilicen su imaginación para hacer los servicio que quieran, estos son los pasos a seguir para los servicio, puedes hacer servicios que hagan que se inicialicé una aplicación cada determinada hora o que se yo, yo voy a crear como termino de mi ejemplo un servicio sencillo que me muestre la calculadora un tiempo determinado, este será al código. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.ServiceProcess; using System.Text;
namespace WindowsService1 { public partial class Service1 : ServiceBase { public Service1() { InitializeComponent(); }
protected override void OnStart(string[] args) { timer1.Interval = 5400; timer1.Start(); }
protected override void OnStop() { timer1.Stop(); }
private void timer1_Elapsed_1(object sender, System.Timers.ElapsedEventArgs e) {
Process.Start("calc.exe"); } } } Después de tener el código de nuestro proyecto Finalizado, simplemente lo ejecutamos para que nos genere nuestro archivo (.exe) Abrimos el Símbolo del Sistema de Visual Studio.
Y dentro del símbolo del Sistema instalamos nuestro servicio, con el comando InstallUtil “path”. El path es la ruta completa de donde se encuentra el archivo .exe de nuestro proyecto que anteriormente creamos. Después de Instalar nuestro Servicio nos vamos al panel de control, Herramientas Administrativas y buscamos servicio, comprobamos si nuestro servicio se encuentra ahí, el servicio se debe de llamar como lo pusimos en la clase de Instalación de un principio, recuerden que el nombre era MyServicio. Recuerden que lo declaramos que iba arrancar de forma local e iba iniciar de forma automática, simplemente nos queda iniciarlo. Después de Iniciar nuestro servicio Se estará ejecutando como el tiempo que declaramos en el timer.Interval Nota:Para controlar el tiempo de su servicio solo cambien el tiempo en el atributo del Timer.Interval.
Espero a alguien le halla servido este pequeño articulo.
|