今天从优快云上看到一篇关于待机状态下使用程序唤醒电脑的代码,感觉很好,不过没有试过,现把代码转过来以供日后有用的时候再试一下。 using System; using System.Runtime.InteropServices; using Microsoft.Win32.SafeHandles; using System.Threading; using System.ComponentModel; namespace ConsoleApplication1 { class Program { [DllImport("kernel32.dll")] public static extern SafeWaitHandle CreateWaitableTimer(IntPtr lpTimerAttributes, bool bManualReset, string lpTimerName); [DllImport("kernel32.dll", SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool SetWaitableTimer(SafeWaitHandle hTimer, [In] ref long pDueTime, int lPeriod, IntPtr pfnCompletionRoutine, IntPtr lpArgToCompletionRoutine, bool fResume); static void Main(string[] args) { SetWaitForWakeUpTime(); } static void SetWaitForWakeUpTime() { DateTime utc = DateTime.Now.AddMinutes(1); long duetime = utc.ToFileTime(); using (SafeWaitHandle handle = CreateWaitableTimer(IntPtr.Zero, true, "MyWaitabletimer")) { if (SetWaitableTimer(handle, ref duetime, 0, IntPtr.Zero, IntPtr.Zero, true)) { using (EventWaitHandle wh = new EventWaitHandle(false, EventResetMode.AutoReset)) { wh.SafeWaitHandle = handle; wh.WaitOne(); } } else { throw new Win32Exception(Marshal.GetLastWin32Error()); } } // You could make it a recursive call here, setting it to 1 hours time or similar Console.WriteLine("Wake up call"); Console.ReadLine(); } } }