是否有任何Win32 API在特定時間喚醒已關閉的系統?我看到一個名爲Autopower On的程序,它可以在指定的時間啓動系統。C#:如何喚醒已關閉的系統?
回答
得到the below post從網站。任何機構都試過這個?
沒有什麼框架,所以你必須「PInvoke」一點。 您需要調用的API是CreateWaitableTimer和SetWaitableTimer。 以下是一個完整的(Q & D)示例,演示瞭如何使用上面的Win32 API從睡眠/休眠狀態喚醒系統 。 請注意,這裏我設置了300000000 nSecs的相對喚醒時間。 這意味着計算機將在設置計時器後的30秒內喚醒(假設他已睡着或者休眠 )。 有關SetWaitableTimer及其參數的詳細信息,請查閱MSDN文檔。
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace Willys
{
class Program
{
[DllImport("kernel32.dll")]
public static extern IntPtr CreateWaitableTimer(IntPtr lpTimerAttributes,
bool bManualReset, string lpTimerName);
[DllImport("kernel32.dll")]
public static extern bool SetWaitableTimer(IntPtr hTimer, [In] ref long
pDueTime, int lPeriod, IntPtr pfnCompletionRoutine, IntPtr
lpArgToCompletionRoutine, bool fResume);
[DllImport("kernel32", SetLastError = true, ExactSpelling = true)]
public static extern Int32 WaitForSingleObject(IntPtr handle, uint
milliseconds);
static void Main()
{
SetWaitForWakeUpTime();
}
static IntPtr handle;
static void SetWaitForWakeUpTime()
{
long duetime = -300000000; // negative value, so a RELATIVE due time
Console.WriteLine("{0:x}", duetime);
handle = CreateWaitableTimer(IntPtr.Zero, true, "MyWaitabletimer");
SetWaitableTimer(handle, ref duetime, 0, IntPtr.Zero, IntPtr.Zero, true);
uint INFINITE = 0xFFFFFFFF;
int ret = WaitForSingleObject(handle, INFINITE);
MessageBox.Show("Wake up call");
}
}
}
這Wake on LAN (WOL)代碼項目後可能會使用(無論主板和網卡必須支持WOL)
一旦你真的關閉了你的電腦(不睡覺或休眠),你不能直接從C#,C++代碼喚醒它。所有操作系統本身都關閉後。
唯一的機會是你的主板支持某種定時器機制。用一些C++函數可以將一些標誌寫入BIOS並設置該定時器。
使用窗口「計劃任務」菜單。請參閱:
http://www.howtogeek.com/119028/how-to-make-your-pc-wake-from-sleep-automatically/
創建要在喚醒手動運行,然後進入計劃任務列表中的第一次特定的時間後喚醒窗口的程序。
當你編程喚醒時,我不確定你是否需要你的程序調用一個Windows API到 停止它被再次喚醒,同樣如果你想讓你的程序在啓動另一個調度任務喚醒它後關閉PC再次。需要重新研究一下Windows API。
這是一個適合超級用戶的非編程答案。它不回答被問到的編程問題,但是,這需要從C#配置喚醒。 – 2014-11-23 00:38:02
- 1. 從睡眠C喚醒系統#
- 2. 如何在關機前設置系統的喚醒時間?
- 3. Android喚醒鎖定強制關閉
- 4. c#定時器:系統喚醒後的HTTP連接錯誤
- 5. 如何以程序喚醒睡眠如果蓋子關閉?
- 6. 如何檢測Windows系統是否支持喚醒定時器
- 7. 如何確定爲什麼發生系統喚醒
- 8. 如何喚醒awakefromnib
- 9. 如何關閉Android手機睡眠和喚醒後添加系統重疊視圖的Android服務?
- 10. 關機和喚醒腳本C#
- 11. 檢測系統何時從ASP睡眠中喚醒的事件?
- 12. C# - 如何掛起到RAM和喚醒
- 13. C# - 如何喚醒睡眠線程?
- 14. 如何喚醒局域網以喚醒我的電腦
- 15. WifiManager.startScan() - 不喚醒無線網絡,如果關閉,對不對?
- 16. Android:枚舉系統中的所有喚醒鎖
- 17. 啓動安卓系統中的喚醒/睡眠活動
- 18. 命令喚醒睡眠命令後的Windows系統
- 19. Android設備如何喚醒
- 20. 如何釋放喚醒鎖?
- 21. Android - 如何喚醒wifi?
- 22. pthread_singal在多處理器系統上喚醒多個線程
- 23. 全球定位系統,傳感器和喚醒
- 24. Linux futex系統調用虛假喚醒返回值爲0?
- 25. 你如何關閉Linux系統?
- 26. 如何關閉Web2py票務系統?
- 27. 如何關閉在android系統
- 28. 屏幕關閉時部分喚醒鎖釋放
- 29. 如何找出RTC wakealarm是否觸發系統在Linux中喚醒?
- 30. Android,wifi喚醒
你什麼時候運行這個C#程序?電腦關機了嗎?或者在它關閉之前? – Gabe 2010-10-31 04:29:20
我在關閉之前運行此程序。 – vishnu 2010-10-31 04:31:04
您需要深入研究ACPI。有一點谷歌搜索說你可以通過WMI訪問它,但我不確定它在多大程度上。 – Brad 2010-10-31 04:33:57