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

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();
  }

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值