欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#實(shí)現(xiàn)系統(tǒng)休眠或靜止休眠的方法

 更新時間:2023年05月22日 11:30:36   作者:叫我少年  
這篇文章主要介紹了C#實(shí)現(xiàn)系統(tǒng)休眠或靜止休眠的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

封裝類

用于阻止系統(tǒng)休眠的C#類。以下是代碼注釋的解釋:

  • DllImport("kernel32.dll"):定義了一個API函數(shù),該函數(shù)在Windows內(nèi)核中定義。
  • enum ExecutionFlag : uint:定義了一個枚舉類型,其中包含三個標(biāo)志,分別用于阻止系統(tǒng)休眠、關(guān)閉顯示器和繼續(xù)執(zhí)行。
  • PreventSleep(bool includeDisplay = false):這個方法用于阻止系統(tǒng)休眠,直到線程結(jié)束恢復(fù)休眠。如果includeDisplay參數(shù)為true,則還會阻止關(guān)閉顯示器。
  • ResotreSleep():這個方法用于恢復(fù)系統(tǒng)休眠。

使用了kernel32.dll中的SetThreadExecutionState函數(shù)來阻止系統(tǒng)休眠。我們還定義了一個枚舉類型ExecutionFlag,用于指定阻止系統(tǒng)休眠的選項(xiàng)。我們可以使用SetThreadExecutionState函數(shù)來設(shè)置ExecutionFlag標(biāo)志,以防止系統(tǒng)休眠

class SystemSleepManagement
   {
       //定義API函數(shù)
       [DllImport("kernel32.dll")]
       static extern uint SetThreadExecutionState(ExecutionFlag flags);
       [Flags]
       enum ExecutionFlag : uint
       {
           System = 0x00000001,
           Display = 0x00000002,
           Continus = 0x80000000,
       }
       /// <summary>
       ///阻止系統(tǒng)休眠,直到線程結(jié)束恢復(fù)休眠
       /// </summary>
       /// <param name="includeDisplay">是否阻止關(guān)閉顯示器</param>
       public static void PreventSleep(bool includeDisplay = false)
       {
           if (includeDisplay)
               SetThreadExecutionState(ExecutionFlag.System | ExecutionFlag.Display | ExecutionFlag.Continus);
           else
               SetThreadExecutionState(ExecutionFlag.System | ExecutionFlag.Continus);
       }
       /// <summary>
       ///恢復(fù)系統(tǒng)休眠
       /// </summary>
       public static void ResotreSleep()
       {
           SetThreadExecutionState(ExecutionFlag.Continus);
       }
       /// <summary>
       ///重置系統(tǒng)休眠計時器
       /// </summary>
       /// <param name="includeDisplay">是否阻止關(guān)閉顯示器</param>
       public static void ResetSleepTimer(bool includeDisplay = false)
       {
           if (includeDisplay)
               SetThreadExecutionState(ExecutionFlag.System | ExecutionFlag.Display);
           else
               SetThreadExecutionState(ExecutionFlag.System);
       }
   }

因此,要實(shí)現(xiàn)下載時阻止程序休眠,則有兩種實(shí)現(xiàn)方式:

  • 下載期間起計時器定期執(zhí)行ResetSleepTimer函數(shù)
  • 下載開始時執(zhí)行PreventSleep函數(shù),下載結(jié)束后執(zhí)行ResotreSleep函數(shù)。
  • 另外,和阻止系統(tǒng)休眠類似,有的程序還需要有阻止屏保功能。

到此這篇關(guān)于C#實(shí)現(xiàn)系統(tǒng)休眠或靜止休眠的文章就介紹到這了,更多相關(guān)c#系統(tǒng)休眠內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • c# 實(shí)現(xiàn)漢諾塔游戲

    c# 實(shí)現(xiàn)漢諾塔游戲

    這篇文章主要介紹了c# 實(shí)現(xiàn)漢諾塔游戲的示例,幫助大家更好的理解和使用c# 編程語言,感興趣的朋友可以了解下
    2020-11-11
  • C#實(shí)現(xiàn)為一張大尺寸圖片創(chuàng)建縮略圖的方法

    C#實(shí)現(xiàn)為一張大尺寸圖片創(chuàng)建縮略圖的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)為一張大尺寸圖片創(chuàng)建縮略圖的方法,涉及C#創(chuàng)建縮略圖的相關(guān)圖片操作技巧,需要的朋友可以參考下
    2015-06-06
  • C#用遞歸算法解決經(jīng)典背包問題

    C#用遞歸算法解決經(jīng)典背包問題

    背包問題有好多版本,本文只研究0/1版本,即對一個物體要么選用,要么就拋棄,不能將一個物體再繼續(xù)細(xì)分的情況。
    2016-06-06
  • c#版json數(shù)據(jù)解析示例分享

    c#版json數(shù)據(jù)解析示例分享

    JSON(全稱為JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式。它是基于JavaScript語法標(biāo)準(zhǔn)的一個子集。 JSON采用完全獨(dú)立于語言的文本格式,可以很容易在各種網(wǎng)絡(luò)、平臺和程序之間傳輸。JSON的語法很簡單,易于人閱讀和編寫,同時也易于機(jī)器解析和生成
    2014-03-03
  • C#中string用法實(shí)例詳解

    C#中string用法實(shí)例詳解

    這篇文章主要介紹了C#中string用法,非常詳細(xì)的總結(jié)了比較常見的關(guān)于C#中string的幾個常用方法,需要的朋友可以參考下
    2014-08-08
  • C#實(shí)現(xiàn)分頁組件的方法

    C#實(shí)現(xiàn)分頁組件的方法

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)分頁組件的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • c#中LINQ的基本用法(三)

    c#中LINQ的基本用法(三)

    這篇文章介紹了c#中LINQ的基本用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下的相關(guān)資料
    2022-04-04
  • Unity3D實(shí)現(xiàn)物體閃爍效果

    Unity3D實(shí)現(xiàn)物體閃爍效果

    這篇文章主要為大家詳細(xì)介紹了Unity3D實(shí)現(xiàn)物體閃爍效果,類似霓虹燈、跑馬燈、LED燈效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • 一看就懂:圖解C#中的值類型、引用類型、棧、堆、ref、out

    一看就懂:圖解C#中的值類型、引用類型、棧、堆、ref、out

    這篇文章主要介紹了一看就懂:圖解C#中的值類型、引用類型、棧、堆、ref、out,本文用淺顯易懂的語言組織介紹了這些容易混淆的概念,需要的朋友可以參考下
    2015-06-06
  • C#編程實(shí)現(xiàn)DataTable添加行的方法

    C#編程實(shí)現(xiàn)DataTable添加行的方法

    這篇文章主要介紹了C#編程實(shí)現(xiàn)DataTable添加行的方法,結(jié)合兩個實(shí)例形式分析了C#操作DataTable實(shí)現(xiàn)動態(tài)添加行的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11

最新評論