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

相关文章:

  • 2021-11-25
  • 2021-11-05
  • 2022-01-16
  • 2022-01-01
  • 2021-09-27
  • 2021-12-10
猜你喜欢
  • 2021-06-23
  • 2021-05-20
  • 2021-06-29
  • 2022-12-23
  • 2021-11-04
相关资源
相似解决方案