2010-10-01 3 views
0

Я пытаюсь добавить функциональность в свою программу, которая позволит пользователю разбудить их систему из сна в установленный срок.Wake System from Sleep C#

Я много рассказывал об этом, и примеры онлайн, похоже, не работают.

Я использовал WaitableTimer, чтобы система спала, но, похоже, она не проснулась.

Может ли кто-нибудь помочь мне здесь.

для ссылки на код, я использую WPF

Благодаря

+0

Что вы подразумеваете под «системой» - операционной системой, то есть Windows или вашим приложением? Что на самом деле означает «состояние сна» и событие «проснуться»? Я думаю, есть больше способов понять ваш вопрос. –

+0

Когда я имею в виду System, я имею в виду машину, состояние «Сон» означает, что вы можете настроить систему на спящий режим, так как есть состояние сна и спящего режима, я хочу вывести его из сна из моего приложения. Я читал, что WaitableTimer на самом деле все еще работает, когда системы спали, но не могут заставить его работать. –

+1

Вы не задаете этот вопрос Smart Way. С вашим вызовом SetWaitableTimer или объявлением pinvoke неизбежно будет что-то не так. Или ваша проверка ошибки для вызова. Почтовый индекс. –

ответ

0

ли какая-либо другая программа сможет разбудить компьютер график? Вам нужно выяснить, является ли проблема с вашим кодом или с вашей конфигурацией системы, а запуск чужого программного обеспечения в качестве теста - самый простой способ.

Возможно, вам потребуется включить поддержку «Wake on Timer» в BIOS.

Какую версию Windows вы используете? Windows Vista и 7 поставляются с некоторыми инструментами для включения/отключения возможности отдельных компонентов разбудить систему, чтобы, например, разрешать проблемы, когда очень чувствительная мышь непреднамеренно движется достаточно, чтобы разбудить компьютер. Возможно, вам потребуется включить поддержку слежения для компонентов HPET или RTC.

+0

Привет, Я использую Windows 7 x64 Ultimate, и я включил использование таймеров для пробуждения в настройках параметров питания, но ничего не происходит, я мог бы найти только один другой таймер пробуждения, но он не кажется открытым. –

+0

Итак, вы выполнили следующие инструкции: http://support.microsoft.com/kb/973454? Встроенное расписание задач может разбудить компьютер, попробуйте это (инструкции для Vista, но также будут работать на 7): http://www.winvistaclub.com/t86.html –

0

Вы пробовали Wake On LAN (используя MAC-адрес):

namespace WakeOnLan 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      if(args.Length==1) 
      { 
       string bytes = args[0].Replace("-", ""); 
       long l = 0; 
       if (bytes.Length != 12 || !long.TryParse(bytes.Substring(0, 6), NumberStyles.HexNumber, null, out l) || !long.TryParse(bytes.Substring(6), NumberStyles.HexNumber, null, out l)) 
        Console.WriteLine("Invalid string"); 
       else 
       { 
        try 
        { 
         WakeOnLan(bytes); 
         Console.WriteLine("Sent wake on lan"); 
        } 
        catch (Exception e) 
        { 
         Console.WriteLine(e.ToString()); 
        } 
       } 
      } 
      else 
      { 
       Console.WriteLine("WakeOnLan.exe <MAC Address>\r\nMAC address must be 6 bytes in hexadecimal format, optionally separated by hyphen."); 
      } 
     } 

     private static void WakeOnLan(string bytesString) 
     { 
      List<byte> packet = new List<byte>(); 
      for (int i = 0; i < 6; i++) 
      { 
       packet.Add(byte.Parse(bytesString.Substring(i*2,2),NumberStyles.HexNumber)); 
      } 

      byte[] mac = packet.ToArray(); 
      for (int i = 0; i < 15; i++) 
      { 
       packet.AddRange(mac); 
      } 
      for (int i = 0; i < 6; i++) 
      { 
       packet.Insert(0, 0xFF); 
      } 

      UdpClient client = new UdpClient(); 
      client.Connect(IPAddress.Broadcast, 7); //Any UDP port will work, but 7 is my lucky number ... 
      client.Send(packet.ToArray(), packet.Count); 
     } 

    } 
} 
+0

Источник: http://www.expertcore.org/viewtopic.php?style=4&f=10&t=1448 – Aliostad

+0

Я действительно старался держаться подальше от Wake on LAN, так как большинство моих пользователей будут использовать беспроводной адаптер, и это не так, t явно поддерживается. –