namespace MonitorService
{
public partial class MonitorSv : ServiceBase
{
string AppName = "",MusicName = "";
string apppath = "";
Thread threadwork;
SoundPlayer player;
public MonitorSv()
{
InitializeComponent();
string path = Directory.GetCurrentDirectory()+"\\Resources\\XML\\AppFile.xml";// Directory.GetCurrentDirectory() + "\\Resources\\XML\\AppFile.xml";
string[] names = RwXmlBs.ReadXml(path);
if (names != null && names.Length == )
this.AppName = names[];
this.MusicName = names[];
//Beep(1000, 10000);//调试可以响,但是安装后不响,所以改成播放声音 //WriteFile(names[0] + "<=>" + names[1] + "++path:" + path, 0, "构造函数");
PlayMusic(); } private void PlayMusic()
{
if (String.IsNullOrEmpty(MusicName))
return;
player = new SoundPlayer();
player.SoundLocation = @"D:\\spring.wav";// MusicName;// @""+ MusicName + "";
player.Load(); //同步加载声音
player.Play(); //启用新线程播放
} private void PlayerStop()
{
if (player != null)
{
player.Stop();
}
}
protected override void OnStart(string[] args)
{
if (threadwork == null)
{
threadwork = new Thread(CheckAppMethod);
threadwork.IsBackground = true;
threadwork.Start();
}
} private void CheckAppMethod()
{
Process[] ps = null;
try
{
while (true)
{
if (!String.IsNullOrEmpty(AppName))
{
ps = Process.GetProcessesByName(AppName); // "MakeCard"); //不用带.exe
if (ps.Length <= )//进程被杀死,则报警.
{
PlayMusic();
//Been(500,1000);//不可以响,搞不懂
}
else
{
PlayerStop();
}
}
System.Threading.Thread.Sleep();
}
}
catch (Exception EX)
{
WriteFile(AppName, ps.Length, "异常的"+EX.ToString());
OnShutdown();
}
} private void WriteFile(string AppName,int Length, string EX)
{
try
{
FileStream fs = new FileStream(apppath+"\\CloseFileLog.txt", FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs);
sw.BaseStream.Seek(, SeekOrigin.End);
sw.WriteLine("AppName:" + AppName + "++ps.Length:" + Length + ">>>" + DateTime.Now.ToString() + EX.ToString() + "\n");
sw.Flush();
sw.Close();
fs.Close();
}
catch (Exception ex)
{ }
} protected override void OnShutdown()
{
base.OnShutdown();
} protected override void OnStop()
{
GC.Collect();
PlayerStop();
} // 第一个参数是指频率的高低,越大越高,第二个参数是指响的时间多长
[DllImport("kernel32.dll", EntryPoint = "Beep")]
public static extern int Beep(int dwFreq,int dwDuration);
}
}

c# windows service 实现监控其他程序是否被关闭,关闭则报警的更多相关文章

  1. .NET开发Windows Service程序 - Topshelf

    在实际项目开发过程中,会经常写一些类似定时检查,应用监控的应用.这类应用在windows平台通常都会写成window service程序. 在百度上搜索一下'c#开发windows service', ...

  2. C# 创建Windows Service(Windows服务)程序

    本文介绍了如何用C#创建.安装.启动.监控.卸载简单的Windows Service 的内容步骤和注意事项. 一.创建一个Windows Service 1)创建Windows Service项目 2 ...

  3. 如何利用mono把.net windows service程序迁移到linux上

    How to migrate a .NET Windows Service application to Linux using mono? 写在最前:之所以用要把windows程序迁移到Linux上 ...

  4. 让自己的C++程序(非服务程序)运行为一个windows service

    因为项目的一些变化和原因,需要把数据处理的一个后台程序创建为一个windows服务,运行以下命令能创建成功: sc create "MyApp Service Name" binP ...

  5. C#中级-Windows Service程序安装注意事项

    一.前言 这周除了改写一些识别算法外,继续我的Socket服务编写.服务器端的Socket服务是以Windows Service的形式运行的. 在我完成Windows Service编写后,启动服务时 ...

  6. C#中级-通过注册表读取Windows Service程序执行路径

    一.前言        假设我们的C#解决方案中有多个程序应用,如:Web应用.控制台程序.WPF程序应用和Windows服务应用. 那么这些非Windows Service应用程序怎么在代码中找到W ...

  7. C#Windows Service程序的创建安装与卸载

    C#Windows Service程序的创建安装与卸载 一.开发环境 操作系统:Windows7x64 sp1 专业版 开发环境:Visual studio 2013 编程语言:C# .NET版本: ...

  8. windows service程序的Environment.CurrentDirectory路径

    当前工作目录Environment.CurrentDirectory,对于winform程序,其是在程序放置的目录里, 而windows service的Environment.CurrentDire ...

  9. Windows下tomcat进程监控批处理程序

    在Windows下tomcat进程监控批处理程序脚本如下: @echo off ::tomcat安装目录 set _tomcatDir=E:\myFiles\apache-tomcat-8.5.31 ...

随机推荐

  1. [BZOJ4291] [PA2015] Kieszonkowe

    Description 给定n个数,请从中选出若干个数,使得总和为偶数,请最大化这个总和.  Input 第一行包含一个正整数n(1<=n<=1000000). 第二行包含n个正整数a_1 ...

  2. MySQL系列-第一章节:MySQL介绍与安装

    1.数据库介绍 1.1.什么是数据库`<Database>` 简单说存放数据的仓库,这个仓库按照一定的数据结构<数据结构是指数据的组织形式或数据之间的联系>来组织.存储的,我们 ...

  3. sprintf函数使用

    功能 把格式化的数据写入某个字符缓冲区. 所需头文件 stdio.h 原型 int sprintf( char *buffer, const char *format, [ argument] - ) ...

  4. js备战春招の四の表单

    表单验证:required="required"(浏览器自动验证) javascript表单验证: <input id="numb">这条html标 ...

  5. Google Maps API的使用

    之前在学习了简单的API调用后,查看了几个知名网站的API调用方法,发现Google的API调用还是相对比较简单的.下面就从API key的获取.googlemaps的安装,再到实际使用做一下说明. ...

  6. 如何配置VS使得可以通过域名或IP访问

    一.前言: 在平时使用Visio Studio进行网站开发,经常会遇到一个问题.既要可以使用VS的Debug一步步跟进项目的走向,又必须是外界可以访问的.这个问题会在微信开发中非常常见,就拿微信开发中 ...

  7. 分享PHP中的10个实用函数

    分享PHP中的10个实用函数 PHP的功能越来越强大,里面有着非常丰富的内置函数.资深的PHP程序员对它们可能都很熟悉,但很多参加PHP培训的PHP初学者,仍然对一些非常有用的函数不太熟悉.这篇文章里 ...

  8. 【Python】 用户图形界面GUI wxpython IV 菜单&对话框

    更多组件 ■ 菜单栏 Menu 菜单是很多GUI必不可少的一部分.要建立菜单,必须先创建菜单栏: menuBar = MenuBar() menu = Menu() item1 = menu.Appe ...

  9. 一个shell脚本,让你的linux命令行酷炫起来

    可调用如下函数达到echo出来带颜色的文字.._echo_error() { echo -ne "\033[31;1m $1\033[0m\n";}_echo_ok() { ech ...

  10. Linux下安装配置jdk

    步骤: 1.去官网下载jdk压缩包 网址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151. ...