0

プログラムに機能を追加して、ユーザーが設定した時間にシステムをスリープ状態から復帰できるようにしようとしています。

私はこれについて多くのことをグーグルで調べましたが、オンラインの例はうまくいかないようです。

WaitableTimer を使用してシステムをスリープ状態に設定しましたが、起動していないようです。

誰でもここで私を助けてくれますか。

コード参照のために、私はWPFを使用しています

ありがとう

4

2 に答える 2

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); 
        }

    }
}
于 2010-10-01T14:17:08.757 に答える
0

スケジュールどおりにコンピューターをウェイクアップできる他のソフトウェアはありますか? 問題が自分のコードにあるのか、それともシステム構成にあるのかを突き止める必要があります。他の人のソフトウェアをテストとして実行するのが最も簡単な方法です。

BIOS で「Wake on Timer」サポートを有効にする必要がある場合があります。

使用している Windows のバージョンは何ですか? Windows Vista および 7 には、個々のコンポーネントがシステムをウェイクアップする機能を有効/無効にするツールがいくつか付属しています。たとえば、非常に敏感なマウスが意図せずに動いてコンピュータがウェイクアップした場合の問題を解決するためです。HPET または RTC コンポーネントのスリープ解除サポートを有効にする必要がある場合があります。

于 2010-10-01T14:22:14.693 に答える