• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
孟子e章给出的vb代码,现在从这个代码翻译成c#,给习惯c#的人参考
需要注意的是图片一定需要是ico格式,否则可能会导致托盘的不显示

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

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
针对C#.NET各种代码生成器的一点小建议发布时间:2022-07-13
下一篇:
九九乘法表(c#)发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap