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. Vue的组件为什么要export default

    Vue 的模块机制 Vue 是通过 webpack 实现的模块化,因此可以使用 import 来引入模块,例如: 此外,你还可以在bulid/webpack.base.conf.js文件中修改相关配置 ...

  2. jQuery 事件代理时的this

    在jQuery使用on方法进行事件代理的时候,this是有多种变化的.下面开始对其进行研究 HTML的代码: <ul id="selected-plays" class=&q ...

  3. c#多线程同步之EventWaitHandle的应用

    最近在研究前辈写的winform代码,其中有一个功能,前辈用了EventWaitHandle.初读代码,有点不理解,慢慢想来,还是可以理解的.这个功能,就是执行某项比较耗时的任务,需要打开旋转图标,等 ...

  4. Java仪器数据文件解析-PDF文件

    一.概述 使用pdfbox可生成Pdf文件,同样可以解析PDF文本内容. pdfbox链接:https://pdfbox.apache.org/ 二.PDF文本内容解析 File file = new ...

  5. Tensorflow小技巧整理:修改张量特定元素的值

    TensorFlow小技巧整理:修改张量特定元素的值 最近在做一个摘要生成的项目,过程中遇到了很多小问题,从网上查阅了许多别人解决不同问题的方法,自己也在旁边开了个jupyter notebook搞些 ...

  6. 原生js写的flybird小游戏

    游戏地址:http://zangzhihong.jusukeji.com/flybird/index.html html部分 <!DOCTYPE html>   <!-- This ...

  7. laravel-Policy步骤

    用户授权Policy 定义策略类 php artisan make:policy <name> 定义方法 注册策略类和模型关联 app > Providers > AuthSe ...

  8. dataTable插件的使用

    var table; table = $("#example").dataTable({ "sDom": "<'top'f<'clear' ...

  9. linux利用ssh远程执行多台机器执行同样的命令

    这篇文章主要介绍了ssh远程执行命令方法和Shell脚本实例,本文讲解了ssh执行远程操作方法和远程执行命令shell脚本示例,需要的朋友可以参考下 ssh执行远程操作命令格式代码如下: ssh -t ...

  10. PHP Session 常用的函数

    我们在前面的文章里面讲到session的原理和最佳实践,感到意犹未尽.现在再来聊下PHP Session用到的几个相关的函数. session_start() session_start() 会创建新 ...