惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
宝玉的分享
宝玉的分享
J
Java Code Geeks
Martin Fowler
Martin Fowler
博客园 - Franky
I
InfoQ
Stack Overflow Blog
Stack Overflow Blog
Blog — PlanetScale
Blog — PlanetScale
S
SegmentFault 最新的问题
B
Blog
The Cloudflare Blog
F
Fortinet All Blogs
量子位
腾讯CDC
博客园 - 司徒正美
D
Docker
大猫的无限游戏
大猫的无限游戏
Microsoft Azure Blog
Microsoft Azure Blog
T
The Blog of Author Tim Ferriss
V
Visual Studio Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
D
DataBreaches.Net
小众软件
小众软件

博客园 - shaoyun

Python抓取百度搜索结果 多线程采集器的核心代码 ThinkPHP2.1模版使用笔记 - 模版嵌套/AJAX级联 畅想无线显示技术 ASP.Net 一步一步学习分页(适合初学者) - shaoyun - 博客园 OAuth协议分析一 通用四级联动下拉列表 通用手动分页方法 通用三级联动下拉列表 Indy 邮件发送的例子 Indy 组件学习注意事项 利用API的消息发送程序原理 Delphi DLL 的编写 Discuz!NT3.1 子目录安装实例 Delphi 托盘程序示例 Delphi ADO 学习笔记 SQL获取数据表的空间占用 很久没有写博了,发发挠骚 Twitter被封后教你继续访问的方法
C#编写简单的系统服务管理器
shaoyun · 2009-12-21 · via 博客园 - shaoyun

从网上看到了一段关于服务枚举的文章,于是做了做搬家的工作,代码基本是照搬了,练手而已,路过看客切勿砸砖。

程序截图:

 

代码如下:

代码

  1 using System;
  2 using System.Windows.Forms;
  3 using System.ServiceProcess;
  4 using System.Collections;
  5 
  6 namespace ServiceManage
  7 {
  8     public partial class MainForm : Form
  9     {
 10         public MainForm()
 11         {
 12             InitializeComponent();
 13         }
 14 
 15         private Hashtable htSvcs = new Hashtable();
 16 
 17         private void MainForm_Load(object sender, EventArgs e)
 18         {
 19             EnumServices();
 20         }
 21 
 22         private void cbAutoReflashStatus_CheckedChanged(object sender, EventArgs e)
 23         {
 24             if(cbAutoReflashStatus.Checked)
 25             {
 26                 tmrStatus.Enabled = true;
 27             }
 28             else
 29             {
 30                 tmrStatus.Enabled = false;
 31             }
 32         }
 33 
 34         /// <summary>
 35         /// 更新服务状态
 36         /// </summary>
 37         private  void UpdateServiceStatus()
 38         {
 39             ServiceController svc;
 40             foreach (ListViewItem lvi in lvService.Items)
 41             {
 42                 svc = (ServiceController) htSvcs[lvi.Text];
 43                 svc.Refresh();
 44                 lvi.SubItems[2].Text = svc.Status.ToString();
 45             }
 46         }
 47 
 48         private void tmrStatus_Tick(object sender, EventArgs e)
 49         {
 50             UpdateServiceStatus();
 51         }
 52 
 53         /// <summary>
 54         /// 枚举系统服务
 55         /// </summary>
 56         private void EnumServices()
 57         {
 58             lvService.Items.Clear();
 59             ListViewItem lvItem;
 60             ServiceController[] svcs = ServiceController.GetServices();
 61             foreach (ServiceController svc in svcs)
 62             {
 63                 lvItem = lvService.Items.Add(svc.DisplayName);
 64                 lvItem.SubItems.Add(svc.ServiceName);
 65                 lvItem.SubItems.Add(svc.Status.ToString());
 66                 lvItem.SubItems.Add(svc.ServiceType.ToString());
 67                 htSvcs.Add(svc.DisplayName,svc);
 68             }
 69         }
 70 
 71         private void btnReverse_Click(object sender, EventArgs e)
 72         {
 73             foreach (ListViewItem lvi in lvService.Items)
 74             {
 75                 lvi.Checked = !lvi.Checked;
 76             }
 77         }
 78 
 79         private void btnSelAll_Click(object sender, EventArgs e)
 80         {
 81             foreach (ListViewItem lvi in lvService.Items)
 82             {
 83                 lvi.Checked = true;
 84             }
 85         }
 86 
 87         private void btnRun_Click(object sender, EventArgs e)
 88         {
 89             if(lvService.CheckedItems.Count>0)
 90             {
 91                 ServiceController svc;
 92                 foreach (ListViewItem lvi in lvService.CheckedItems)
 93                 {
 94                     svc = (ServiceController)htSvcs[lvi.Text];
 95                     if(svc.Status== ServiceControllerStatus.Stopped)  svc.Start();
 96                 }
 97                 UncheckSelected();
 98                 UpdateServiceStatus();
 99             }
100         }
101 
102         private void btnStop_Click(object sender, EventArgs e)
103         {
104             if (lvService.CheckedItems.Count > 0)
105             {
106                 ServiceController svc;
107                 foreach (ListViewItem lvi in lvService.CheckedItems)
108                 {
109                     svc = (ServiceController)htSvcs[lvi.Text];
110                     if ((svc.Status != ServiceControllerStatus.Stopped) && svc.CanStop) svc.Stop();
111                 }
112                 UncheckSelected();
113                 UpdateServiceStatus();
114             }
115         }
116         private void UncheckSelected()
117         {
118             foreach (ListViewItem lvi in lvService.CheckedItems)
119             {
120                 lvi.Checked = false;
121             } 
122         }
123     }
124 }