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

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

アクティブウインドウのスクリーンショットを周期的に撮るだけ

ストアアプリのスクショを撮ろうと思ったら
ドスパラのwinタブレットで仕様でできなかったので、
どうにかすることにしました。

以下コードです。

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

namespace AutoScreenShot
{
    class Program
    {
        //撮影周期(秒)
        const uint PERIOD_SECOND = 5;

        static void Main(string[] args)
        {
            Console.WriteLine("アクティブなウインドウのスクショを約" + PERIOD_SECOND + "秒周期で撮ります");
            Console.WriteLine("撮るたびにシステム音が鳴ります");
            Console.WriteLine("撮り終わったらコンソールを閉じてください");
            Console.WriteLine("ほっとくといつまでも動きます");

            var count = PERIOD_SECOND;

            while (true)
            {
                if (count == 0)
                {
                    System.Media.SystemSounds.Asterisk.Play();

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

                    count = PERIOD_SECOND;
                }
                Console.WriteLine(count--);

                Thread.Sleep(1000);
            }
        }
    }
}

・コードの解説
PERIOD_SECONDを変えれば撮影周期(デフォルトで5秒)を変更できます。

撮るたびにシステム音を鳴らして合図にしています。

SendKeys.SendWait("%{PRTSC}");

でAlt+PrintScreenキーを押したことになっています。


・使い方
起動してから撮りたい画面に移れば後は勝手に撮ります。
本当に撮るだけなので画像生成はしていません。
すべて保存する場合はCLCLなど
クリップボード履歴のソフトを使うなどしてください。
もちろんコード改変でもどうぞ。

用が済んだらアプリを閉じてください。


一応アプリも置いておきます。
置き場所