我正在尝试在服务中使用 ManagementEventWatcher 来跟踪计算机何时进入和退出睡眠模式。我是 .NET 和 C# 的新手,所以我很难想出语法来完成这项工作。
我找到了一篇博客文章,详细说明了他如何使用 ManagementEventWatcher 来跟踪此状态,但他没有发布他的整个代码。我正在尝试创建一个简单的服务,该服务会创建一个 .txt 日志文件,说明计算机已暂停/恢复,但在命名空间和类型方面遇到问题。
这是 service.cs 文件的代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Management;
namespace SleepNotifierService
{
public class WqlEventQuery : EventQuery { }
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
WqlEventQuery query = new WqlEventQuery("Win32_PowerManagementEvent");
_watcher = new ManagementEventWatcher(query);
_watcher.EventArrived += new EventArrivedEventHandler(watcher_EventArrived);
_watcher.Start();
}
protected override void OnStop()
{
_watcher.Stop();
}
void watcher_EventArrived(object sender, EventArrivedEventArgs e)
{
try
{
int eventType = Convert.ToInt32(e.NewEvent.Properties["EventType"].Value);
switch (eventType)
{
case 4:
Sleep();
break;
case 7:
Resume();
break;
}
}
catch (Exception ex)
{
//Log(ex.Message);
}
}
public void Sleep()
{
}
public void Resume()
{
}
}
}
同样,这是我第一次使用 .NET 和 C# 进行编程,所以我为我的无知道歉。
我收到命名空间错误,例如:
找不到类型或命名空间名称“ManagementEventWatcher”(您是否缺少 using 指令或程序集引用?)
谢谢,
托梅克