User Tools

Site Tools


blog:2025-04-19-001

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

blog:2025-04-19-001 [2025/04/19 10:58] (current)
jethro created
Line 1: Line 1:
 +~~NOTOC~~
 +====== 2025-04-19 C# 如何獲取與設定Windows suspend, shutdown, sleep, 等狀態設定與展示如何進入 ======
 +  * 在 C# 中,可以使用 `System.Management` 命名空間来查詢和設定 Windows 系統狀態,比如獲取和設定電源管理介面。這裡是如何獲取和設定與 Windows suspend、shutdown、sleep 等相關狀態的示例:
 +===== 獲取電源狀態 =====
 +  * 要獲取Windows的電源狀態,你可以使用 WMI(Windows Management Instrumentation)。以下是示例代碼段:
 +  * <sxh c#>using System;
 +using System.Management;​
 +
 +class Program
 +{
 +    static void Main()
 +    {
 +        GetPowerStatus();​
 +    }
 +
 +    static void GetPowerStatus()
 +    {
 +        ManagementObjectSearcher searcher = new ManagementObjectSearcher("​SELECT * FROM Win32_PowerSetting"​);​
 +        foreach (ManagementObject powerSetting in searcher.Get())
 +        {
 +            Console.WriteLine($"​Name:​ {powerSetting["​InstanceId"​]}"​);​
 +            // 你可以添加更多屬性來查看
 +        }
 +    }
 +}</​sxh>​
 +===== 設定電源狀態 =====
 +  * 在 C# 中直接更改電源設定是相對複雜的。你通常需要使用 P/Invoke 調用 Windows API 來實現這一點。以下是一個設置系統進入睡眠狀態的示例:
 +  * <sxh c#>using System;
 +using System.Runtime.InteropServices;​
 +
 +class Program
 +{
 +    [DllImport("​user32.dll"​)]
 +    [return: MarshalAs(UnmanagedType.Bool)]
 +    public static extern bool SetSuspendState(bool hiberate, bool forceCritical,​ bool disableWakeEvent);​
 +
 +    static void Main()
 +    {
 +        // 進入睡眠狀態
 +        SetSleep();
 +    }
 +
 +    static void SetSleep()
 +    {
 +        SetSuspendState(false,​ true, true);
 +    }
 +}</​sxh>​
 +===== 進入關機或重啟 =====
 +  * 要關閉或重啟系統,可以使用 `Process` 類來調用命令行指令:
 +  * <sxh c#>using System.Diagnostics;​
 +
 +class Program
 +{
 +    static void Main()
 +    {
 +        // 關機
 +        Shutdown();
 +        ​
 +        // 重啟
 +        // Restart();
 +    }
 +
 +    static void Shutdown()
 +    {
 +        Process.Start("​shutdown",​ "/s /t 0");
 +    }
 +
 +    static void Restart()
 +    {
 +        Process.Start("​shutdown",​ "/r /t 0");
 +    }
 +}</​sxh>​
 +===== 注意: =====
 +  * 需要適當的權限:上述涉及到系統設置和關機的操作需要管理員權限,因此確保你的應用有運行這些操作的權限。
 +  * 可能影響用戶體驗:在應用中使用這些功能時,要考慮用戶的體驗,不要隨意關機或重啟系統。
 +  * 測試:建議在開發和測試環境下進行充分的測試,以避免意外影響生產環境。
 +  * 這能幫助獲取和設定 Windows 的各種狀態。
 +===== TAGS =====
 +  * 
 +====== ======
 +  * {{counter}} person(s) visited this page until now.
 +  * [[:​memo:​index|Back]]
 +====== ======
 +<​html><​!-- ​
 +PDF for A4-Portrait:​ {{pdfjs 50%,450px > xxx.pdf?​page-fit}}
 +PDF for A4-Landscape:​ {{pdfjs 500px,700px > xxx.pdf?​page-fit}}
 +PDF for iPad Note: {{pdfjs 700px,500px > xxx.pdf?​page-fit}}
 +
 +Youtube: {{youtube>​large:​XXXXX}}
 +Code Highlight: <sxh php; first-line: 70; highlight: [89,92]; title: New title attribute in action>
 +
 +--></​html>​
  
blog/2025-04-19-001.txt · Last modified: 2025/04/19 10:58 by jethro