【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を自動シャットダウンさせることができます。
夜間の作業終了後や、一定時間後の節電目的などに活用できます。

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

副業から独立まで「稼げる」Webスキルを習得する(PR)

ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。

「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。

このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。

講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。

副業に特化した強み

  • 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
  • AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
  • 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。

受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。

受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。

ブログで稼ぎたいなら「メイカラ」

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

この記事を書いた人

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

目次