サービスで 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 ディレクティブまたはアセンブリ参照がありませんか?)
ありがとう、
トメク