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

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

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

封裝類

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

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

使用了kernel32.dll中的SetThreadExecutionState函數(shù)來阻止系統(tǒng)休眠。我們還定義了一個(gè)枚舉類型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)休眠計(jì)時(shí)器
       /// </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í)阻止程序休眠,則有兩種實(shí)現(xiàn)方式:

  • 下載期間起計(jì)時(shí)器定期執(zhí)行ResetSleepTimer函數(shù)
  • 下載開始時(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • c# 生成二維碼的示例

    c# 生成二維碼的示例

    這篇文章主要介紹了c# 生成二維碼的示例,幫助大家更好的理解和使用c#編程語(yǔ)言,感興趣的朋友可以了解下
    2020-11-11
  • C# 導(dǎo)出Excel的6種簡(jiǎn)單方法實(shí)現(xiàn)

    C# 導(dǎo)出Excel的6種簡(jiǎn)單方法實(shí)現(xiàn)

    C# 導(dǎo)出 Excel 的6種簡(jiǎn)單方法:數(shù)據(jù)表導(dǎo)出到 Excel,對(duì)象集合導(dǎo)出到 Excel,數(shù)據(jù)庫(kù)導(dǎo)出到 Excel,微軟網(wǎng)格控件導(dǎo)出到 Excel,數(shù)組導(dǎo)出到 Excel,CSV 導(dǎo)出到 Excel,你都會(huì)了嗎?需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • C# TcpClient網(wǎng)絡(luò)編程傳輸文件的示例

    C# TcpClient網(wǎng)絡(luò)編程傳輸文件的示例

    這篇文章主要介紹了C# TcpClient網(wǎng)絡(luò)編程傳輸文件的示例,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-04-04
  • Unity腳本自動(dòng)添加頭部注釋的全過程

    Unity腳本自動(dòng)添加頭部注釋的全過程

    在一些公司需要代碼嚴(yán)格的管理,有時(shí)候會(huì)需要用到每個(gè)腳本的頭部做一些介紹,所以下面這篇文章主要給大家介紹了關(guān)于Unity腳本自動(dòng)添加頭部注釋的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • C#創(chuàng)建磁性窗體的實(shí)現(xiàn)方法

    C#創(chuàng)建磁性窗體的實(shí)現(xiàn)方法

    經(jīng)常會(huì)遇到一種情況,即當(dāng)拖動(dòng)一個(gè)窗體(主窗體)時(shí),其他窗體(子窗體)隨著該窗體移動(dòng),當(dāng)拖動(dòng)子窗體時(shí),其他窗體將不跟隨移動(dòng),這就是磁性窗體,所以本文給大家介紹了C#創(chuàng)建磁性窗體的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2024-04-04
  • c#中設(shè)置快捷鍵

    c#中設(shè)置快捷鍵

    c#中設(shè)置快捷鍵...
    2007-03-03
  • C#實(shí)現(xiàn)winform用子窗體刷新父窗體及子窗體改變父窗體控件值的方法

    C#實(shí)現(xiàn)winform用子窗體刷新父窗體及子窗體改變父窗體控件值的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)winform用子窗體刷新父窗體及子窗體改變父窗體控件值的方法,涉及C#窗體交互的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • C# ManualResetEvent使用方法詳解

    C# ManualResetEvent使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了ManualResetEvent使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • C#三種判斷數(shù)據(jù)庫(kù)中取出的字段值是否為空(NULL) 的方法

    C#三種判斷數(shù)據(jù)庫(kù)中取出的字段值是否為空(NULL) 的方法

    最近操作數(shù)據(jù)庫(kù),需要判斷返回的字段值是否為空,在網(wǎng)上收集了3種方法供大家參考
    2013-04-04
  • 淺談Unity腳本生命周期與執(zhí)行順序

    淺談Unity腳本生命周期與執(zhí)行順序

    在Unity中,腳本可以理解為附加在游戲?qū)ο笊系挠糜诙x游戲?qū)ο笮袨榈闹噶畲a。必須綁定在游戲?qū)ο笊喜拍荛_始它的生命周期。游戲?qū)ο罂梢岳斫鉃槟苋菁{各種組件的容器,游戲?qū)ο蟮乃薪M件一起決定了這個(gè)對(duì)象的行為和游戲中的表現(xiàn)
    2021-06-06

最新評(píng)論