Как каждый использует ManagementEventWatcher для отслеживания, приостанавливают/возобновляют?

Я пытаюсь использовать 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' не мог быть найден (Вы пропускаете директиву использования или ссылку на сборку?)

Спасибо,

Tomek

9
задан Tomek 27 January 2010 в 21:47
поделиться

1 ответ

Вам нужна пространство имен System.Management, которое включено в образец кода, предоставленным вами. Я считаю, что вам нужно ссылаться на библиотеку системы. Proom.management в ваших настройках проекта. Следуйте следующим шагам, чтобы сделать это (я предполагаю, что вы предъявляете суждение Visual Studio):

Перейдите в проводник «Решение» и разверните свой проект, щелкните правой кнопкой мыши на папку / параметрах / параметрах ссылок и выберите «Добавить ссылки» в контекстном меню. Теперь выберите вкладку .NET и выберите System.Management из списка и нажмите OK.

7
ответ дан 4 December 2019 в 23:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: