1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
using System;
using System.Windows.Forms;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
using Gma.UserActivityMonitor;
using Microsoft.Win32;
using System.Management;
namespace WindowsService1
{
public partial class Service1 : ServiceBase
{
private InputInfos.ClsAfIdleInfos IdleWatch = null;
private EventArgs e = null;
private long j = 0L;
private GlobalEventProvider mouseMove;
private ManagementEventWatcher ManagementEventWatcher=null;
// public class WqlEventQuery : EventQuery { };
public Service1()
{
InitializeComponent();
eventLog1.Source = "Service2";
}
protected override void OnStart(string[] args)
{
eventLog1.WriteEntry("my service started");
IdleWacth_init();
}
private void IdleWacth_init()
{
eventLog1.WriteEntry("initb");
WqlEventQuery query = new System.Management.WqlEventQuery("Win32_PowerManagementEvent");
ManagementEventWatcher = new ManagementEventWatcher(query);
ManagementEventWatcher.EventArrived += new EventArrivedEventHandler(OnPowerChange);
ManagementEventWatcher.Start();
eventLog1.WriteEntry("expi = 4");
}
private void OnPowerChange(Object sender, EventArrivedEventArgs e)
{
eventLog1.WriteEntry("Resume ");
int eventType = Convert.ToInt32(e.NewEvent.Properties["EventType"].Value);
switch (eventType)
{
case 7:
eventLog1.WriteEntry("Resume"); IdleWacth_init();
break;
case 4:
SystemEvents_PowerModeChanged();break;
default: eventLog1.WriteEntry("oter"); IdleWacth_init(); break;
}
}
private void SystemEvents_PowerModeChanged()
{
eventLog1.WriteEntry("Activité détectée");
Process[] myProcesses;
// Returns array containing all instances of Solitaire
myProcesses = Process.GetProcessesByName("calc");
if(myProcesses.Length >0)
{
foreach (Process myProcess in myProcesses)
{
myProcess.Kill();
}
RestartService(this.ServiceName, 5000);
}
} |
Partager