【C#】指定した時刻にWindows PCを自動でシャットダウンするアプリの作り方

目次

経緯

パソコン作業中、「この時間になったら自動でシャットダウンしてくれたら便利だな」と感じることはありませんか?
そこで今回は、指定した時刻にWindowsを自動シャットダウンするC#製アプリを作成してみました。

テキストボックスに入力した時刻にシャットダウンが実行される仕様です。
Windowsフォームアプリケーション形式で、初学者でも実装しやすい構成になっています。


機能概要

  • テキストボックスに「HH:mm」形式でシャットダウン時刻を入力
  • 「開始」ボタンをクリックするとカウントダウン開始
  • 指定時刻になると自動でPCがシャットダウンされる

実装のポイント

  • System.Diagnostics を使って shutdown コマンドを実行
  • System.Windows.Forms.Timer を使って時間を監視
  • 入力形式は "18:00" などの24時間表記(HH:mm

実装コード(Formアプリ)

以下が、実際に動作する完全なソースコードです。

using System;
using System.Diagnostics;
using System.Globalization;
using System.Windows.Forms;

namespace PCShutdown
{
    public partial class Form1 : Form
    {
        private Timer shutdownTimer;

        public Form1()
        {
            InitializeComponent();
            shutdownTimer = new Timer();
            shutdownTimer.Tick += ShutdownTimer_Tick;
        }

        private void button_Run_Click(object sender, EventArgs e)
        {
            DateTime currentTime = DateTime.Now;
            DateTime shutdownTime;

            if (DateTime.TryParseExact(textBox_ShutdownTime.Text, "HH:mm", CultureInfo.InvariantCulture, DateTimeStyles.None, out shutdownTime))
            {
                shutdownTime = new DateTime(currentTime.Year, currentTime.Month, currentTime.Day, shutdownTime.Hour, shutdownTime.Minute, 0);

                if (shutdownTime <= currentTime)
                {
                    shutdownTime = shutdownTime.AddDays(1);
                }

                TimeSpan timeUntilShutdown = shutdownTime - currentTime;
                shutdownTimer.Interval = (int)timeUntilShutdown.TotalMilliseconds;
                shutdownTimer.Start();

                MessageBox.Show($"PCは {shutdownTime.ToShortTimeString()} にシャットダウンされます。", "スケジュール設定完了");
            }
            else
            {
                MessageBox.Show("正しい時間形式(例: 18:00)で入力してください。", "入力エラー", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void ShutdownTimer_Tick(object sender, EventArgs e)
        {
            shutdownTimer.Stop();
            ShutdownComputer();
        }

        private void ShutdownComputer()
        {
            var psi = new ProcessStartInfo("shutdown", "/s /t 0")
            {
                CreateNoWindow = true,
                UseShellExecute = false
            };

            Process.Start(psi);
        }
    }
}

注意点

  • 実行には管理者権限が必要な場合があります(shutdown /s /t 0 実行時)
  • セキュリティソフトによってブロックされることがあります
  • 実行中にキャンセル機能を追加したい場合は shutdown /a の実装も検討してください

まとめ

今回ご紹介したアプリでは、C#とWindowsフォームを使って指定時刻にPCを自動シャットダウンさせることができます。
夜間の作業終了後や、一定時間後の節電目的などに活用できます。

さらに応用すれば、スリープ・再起動などのアクションも追加可能です。
ぜひご自身の用途に合わせてカスタマイズしてみてください。
最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次