DOBON.NET

システムをスタンバイ、休止状態にする

ここでは、システムをスタンバイ(中断、サスペンド、スリープ)状態(モード)や休止状態(メモリの情報をハードディスクに保存して電源を切る)にする方法を紹介します。

なお、休止状態にするには、コンピュータの設定で休止状態を有効にしている必要があります。休止状態が有効になっていないときにここで紹介する方法で休止状態にしようとすると、スタンバイ状態になります。

Application.SetSuspendStateメソッドで行う

.NET Framework 2.0からは、Application.SetSuspendStateメソッドにより可能です。

VB.NET
コードを隠すコードを選択
'スタンバイ状態にする
Application.SetSuspendState(PowerState.Suspend, False, False)

'休止状態にする
Application.SetSuspendState(PowerState.Hibernate, False, False)
C#
コードを隠すコードを選択
//スタンバイ状態にする
Application.SetSuspendState(PowerState.Suspend, false, false);

//休止状態にする
Application.SetSuspendState(PowerState.Hibernate, false, false);

SetSuspendStateメソッドの2番目のパラメータをTrueにすると、現在実行中のアプリケーションに通知することなく、強制的にスタンバイや休止状態になります(Falseでは、アプリケーションにPBT_APMQUERYSUSPENDイベントが通知されます)。

SetSuspendStateメソッドの3番目のパラメータをTrueにすると、デバイス等がWakeイベントでシステムの復元を要求したときでも復元されなくなります。

SetSuspendState関数で行う

.NET Framework 1.1以前では、SetSuspendState関数をPInvokeで呼び出せば、Application.SetSuspendStateメソッドと同じことができます。

SetSuspendState関数を呼び出すためには、次のようなメソッドを作成します。

VB.NET
コードを隠すコードを選択
<System.Runtime.InteropServices.DllImport("Powrprof.dll", _
    SetLastError:=True)> _
Public Shared Function SetSuspendState(ByVal hibernate As Boolean, _
    ByVal forceCritical As Boolean, _
    ByVal disableWakeEvent As Boolean) As Boolean
End Function
C#
コードを隠すコードを選択
[System.Runtime.InteropServices.DllImport("Powrprof.dll",
    SetLastError = true)]
public static extern bool SetSuspendState(bool hibernate,
    bool forceCritical,
    bool disableWakeEvent);

このメソッドを使用してスタンバイ状態または休止状態にするには、次のようにします。

VB.NET
コードを隠すコードを選択
'スタンバイ状態にする
SetSuspendState(False, False, False)

'休止状態にする
SetSuspendState(True, False, False)
C#
コードを隠すコードを選択
//スタンバイ状態にする
SetSuspendState(false, false, false);

//休止状態にする
SetSuspendState(true, false, false);

SetSuspendState関数の1番目のパラメータでスタンバイ状態にするか休止状態にするかを指定します。2番目と3番目のパラメータの意味は、Application.SetSuspendStateメソッドと同じです。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • .NET Tipsをご利用いただく際は、注意事項をお守りください。
共有する

この記事への評価

この記事へのコメント

この記事に関するコメントを投稿するには、下のボタンをクリックしてください。投稿フォームへ移動します。通常のご質問、ご意見等は掲示板へご投稿ください。