您的位置:首页 > 编程语言 > C#

用托盘控制windows服务的c#实现

2005-04-21 08:40 525 查看
using System;




namespace UBISerialsController




...{




/**//// <summary>


/// Class1 的摘要说明。


/// </summary>


public class Class1




...{


static System.ServiceProcess.ServiceController sc;


static System.Windows.Forms.NotifyIcon ni;


static System.Windows.Forms.ContextMenu cm;


static System.Timers.Timer timer;




public Class1()




...{


//


// TODO: 在此处添加构造函数逻辑


//




}




static void Main()




...{


try




...{


sc=new System.ServiceProcess.ServiceController("UBISerials");


ni=new System.Windows.Forms.NotifyIcon();


ni.Visible=false;


cm=new System.Windows.Forms.ContextMenu();


cm.MenuItems.Add(new System.Windows.Forms.MenuItem("停止",new EventHandler(StopService)));


cm.MenuItems.Add(new System.Windows.Forms.MenuItem("暂停",new EventHandler(PauseService)));


cm.MenuItems.Add(new System.Windows.Forms.MenuItem("继续",new EventHandler(ContiuneService)));


cm.MenuItems.Add(new System.Windows.Forms.MenuItem("开始",new EventHandler(StartService)));


cm.MenuItems.Add("-");


cm.MenuItems.Add(new System.Windows.Forms.MenuItem("关于",new EventHandler(About)));


cm.MenuItems.Add(new System.Windows.Forms.MenuItem("退出",new EventHandler(Exit)));


ni.ContextMenu=cm;


ni.Visible=true;


SetUpTimer();


System.Windows.Forms.Application.Run();


}


catch(System.Exception ex)




...{


System.Windows.Forms.MessageBox.Show(ex.Message.ToString());


}


}




private static void StopService(object sender,System.EventArgs e)




...{


if(sc.Status==System.ServiceProcess.ServiceControllerStatus.Running&&sc.CanStop==true)




...{


try




...{


sc.Stop();


}


catch(System.Exception ex)




...{


System.Windows.Forms.MessageBox.Show(ex.Message.ToString());


}


}


}




private static void PauseService(object sender,System.EventArgs e)




...{


if(sc.Status!=System.ServiceProcess.ServiceControllerStatus.Paused&&sc.CanPauseAndContinue==true)




...{


try




...{


sc.Pause();


}


catch(System.Exception ex)




...{


System.Windows.Forms.MessageBox.Show(ex.Message.ToString());


}


}


}




private static void ContiuneService(object sender,System.EventArgs e)




...{


if(sc.Status==System.ServiceProcess.ServiceControllerStatus.Paused&&sc.CanPauseAndContinue==true)




...{


try




...{


sc.Continue();


}


catch(System.Exception ex)




...{


System.Windows.Forms.MessageBox.Show(ex.Message.ToString());


}


}


}




private static void StartService(object sender,System.EventArgs e)




...{


if(sc.Status==System.ServiceProcess.ServiceControllerStatus.Stopped)




...{


try




...{


sc.Start();


}


catch(System.Exception ex)




...{


System.Windows.Forms.MessageBox.Show(ex.Message.ToString());


}


}


}




private static void About(object sender,System.EventArgs e)




...{


System.Windows.Forms.MessageBox.Show("2005.4.3","关于");


}




private static void Exit(object sender,System.EventArgs e)




...{


try




...{


timer.Dispose();


sc.Dispose();


cm.Dispose();


ni.Dispose();


System.Windows.Forms.Application.Exit();


}


catch(System.Exception ex)




...{


System.Windows.Forms.MessageBox.Show(ex.Message.ToString());


}


}




private static void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)




...{


GetServiceState();


}




private static void GetServiceState()




...{


sc.Refresh();


switch(sc.Status)




...{


case System.ServiceProcess.ServiceControllerStatus.Stopped:




...{


ni.Icon=new System.Drawing.Icon("stopped.ico");


cm.MenuItems[0].Enabled=false;


cm.MenuItems[1].Enabled=false;


cm.MenuItems[2].Enabled=false;


cm.MenuItems[3].Enabled=true;


break;


}


case System.ServiceProcess.ServiceControllerStatus.Running:




...{


ni.Icon=new System.Drawing.Icon("started.ico");


cm.MenuItems[0].Enabled=true;


cm.MenuItems[1].Enabled=true;


cm.MenuItems[2].Enabled=false;


cm.MenuItems[3].Enabled=false;


break;


}


case System.ServiceProcess.ServiceControllerStatus.Paused:




...{


ni.Icon=new System.Drawing.Icon("paused.ico");


cm.MenuItems[0].Enabled=false;


cm.MenuItems[1].Enabled=false;


cm.MenuItems[2].Enabled=true;


cm.MenuItems[3].Enabled=false;


break;


}


default:




...{


ni.Icon=new System.Drawing.Icon("paused.ico");


break;


}


}


}




private static void SetUpTimer()




...{


timer=new System.Timers.Timer();


timer.Interval=500;


timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);


timer.Start();


}


}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: