プログラミングとかブログ

Unity/C#/SRPGStudio/RPGツクールMVの情報とかその他気になったことを調べて書きます。

【C#】指定秒数でアクティブウィンドウのスクショを撮るプログラム

1年ぐらい前に作ったやつを手直し。

DLは以下のリンクを右クリック保存してください。
http://monoboshi.web.fc2.com/utoScreenShot.exe

・使い方
本プログラムのショートカットを作ります。
そのショートカットのプロパティのリンク先の内容に半角スペースを入力した後、続けて秒数を指定します。*1
f:id:shirakamisauto:20160620175334p:plain
あとは起動するだけです。
f:id:shirakamisauto:20160620175745p:plain
・コード

using System;
using System.Windows.Forms;
using System.Threading;

namespace AutoScreenShot
{
    class Program
    {
        //デフォ撮影周期(秒)
        const int PERIOD_SECOND = 5;

        static void Main(string[] args)
        {
            var count = PERIOD_SECOND;
            string[] files = Environment.GetCommandLineArgs();
            count = files.Length >= 2 ? int.Parse(files[1]) : PERIOD_SECOND;

            Console.WriteLine("使い方");
            Console.WriteLine("本プログラムのショートカットを作ってください。\nショートカットのプロパティのリンク先に以下のように秒数を指定してください");

            Console.WriteLine("例:" + @"""" + Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\AutoScreenShot.exe" + @"""" + "10\n");
            Console.WriteLine("アクティブなウインドウのスクショを約" + count + "秒周期で撮ります");
            Console.WriteLine("撮るたびにシステム音が鳴ります");
            Console.WriteLine("撮り終わったらコンソールを閉じてください");
            Console.WriteLine("ほっとくといつまでも動きます");
                       
            while (true)
            {
                if (count == 0)
                {
                    System.Media.SystemSounds.Asterisk.Play();

                    SendKeys.SendWait("%{PRTSC}");
                    Console.WriteLine("スクショを撮影しました");

                    count = files.Length >= 2 ? int.Parse(files[1]) : PERIOD_SECOND;
                }
                Console.WriteLine(count--);

                Thread.Sleep(1000);
            }
        }
    }
}

*1:例外処理してないので数字以外を入力すると落ちます