C#で指定時間後にWindowsのパソコンをスリープさせる方法

C#で指定時間後にWindowsのパソコンをスリープさせる方法

必要なクラス

CシャープでWindowsパソコンをスリープさせるには以下のクラスを使います。

Thread 名前空間: using System.Threading;
Application 名前空間: using System.Windows.Forms;

まずはクラスを使うために上の名前空間を指定やる必要があります。このうちApplicationクラスに関してはvisual studioで参照の追加を行う必要があります。visual studioで参照の追加を行うには、ソリューションエクスプローラーを操作する必要があります。下記の画像で解説します。

visual studio ソリューションエクスプローラー

ソリューションエクスプローラーの「参照」⇒「参照の追加」へとすすみます。

次にあらわれる画面で「System.Windows.Form」という項目にチェックを入れ。OKボタンで閉じます。これで参照の追加は完了です。実際に参照が追加されたかどうかはソリューションエクスプローラーで確認できます。

必要なメソッド

必要なメソッドは下記の2点です。

Thread.Sleep(1000); 1000ミリ秒プログラムの進行をとめる
Application.SetSuspendState(); パソコンをスリープ状態にする

Thread.Sleep(1000);はプログラムの進行をとめますので、?時間後にパソコンをスリープにさせるというやり方ができます。Application.SetSuspendState();はパソコンをスリープ状態にさせます。

Windowsのパソコンをスリープさせるコード

パソコンをスリープ状態にさせるには下記のコードを記述します。

Thread.Sleep(1000);//任意の時間
Application.SetSuspendState(PowerState.Suspend, false, false);

sleepメソッドを使うとプログラムは待機します。単位はミリ秒単位で指定します。1秒は1000msなので1000かける3600をすれば1時間になります。このパラメーターは好きに設定するのが良いかと思います。

スリープ状態にさせるメソッドはこれだけですので、たったの2行でパソコンをスリープ状態にさせることができます。

選択肢を表示する。

これだけのコードでも良いのですが選択肢を作ってやると、操作ミスが発生しにくいかと思います。確認ダイアログを表示するコードは下記の通りです。

DialogResult result = MessageBox.Show(“今から?時間後にスリープします。よろしいですか?”,
“スリープダイアログ”,
MessageBoxButtons.YesNoCancel,
MessageBoxIcon.Exclamation,
MessageBoxDefaultButton.Button2);

//何が選択されたか調べる
if (result == DialogResult.Yes)
{
Thread.Sleep(1000 * 60 * 60 * 2);
Application.SetSuspendState(PowerState.Suspend, false, false);
}
else if (result == DialogResult.No)
{
}
else if (result == DialogResult.Cancel)
{
}

DialogResultは名前空間を指定しなくても使用できます。コンソールアプリでの動作は未確認ですが、デスクトップアプリとして作成すると確認ダイアログが表示されます。

Windowsのパソコンをスリープ状態にさせるメソッドの他に休止状態にさせるメソッドもあります。詳しい解説は下記のサイトを参考にするのが良いかと思います。

システムをスタンバイ、休止状態にする – .NET Tips (VB.NET,C#…)