🔧

タスクトレイからSnipping Toolを起動するツール作った

2023/11/23に公開

「SnipClipper」。以下に置いてます。

https://www.vector.co.jp/soft/screen/winnt/art/se526060.html

作った動機

デスクトップの一部を画像キャプチャして、すぐに編集、といったオペレーションをよく行います。

元々は、Evernoteのタスクトレイのアプリから、スクリーンショット+Evernote上で編集、の流れをよく利用していたのですが、数年前にEvernoteのタスクトレイからはSnipping Toolが起動する仕様に変わってしまっていました。

たしかにSnipping Toolは便利ですが、Evernoteから起動する必然性はありませんでした。
また、最近、ノートをEvernoteからObsidianに移行したので、Evernote自体起動しなくなっていました。

Windows11(10も?)には、Win + Shift + Sで選択範囲をクリップボードにキャプチャするショートカットはありますが、キャプチャしたあとすぐに編集したいケースも多いため、基本的にはSnippingToolから画像をキャプチャするオペレーションを使いたいと思っていました。

そこで、タスクトレイに常駐し、1クリックでSnipping Toolを起動するアプリを作ってみようと思いました。

開発環境

開発は以下の通りです。.NETの開発は経験が無かったので勉強がてら触ってみたいという動機もありました。

  • Visual Studio2022
  • C#
  • .NET 6.0(Windows Form)

コードのメモ

コード的には以下くらいです。左クリックを直接検出する方法がなさそうだったので、 MouseEventHandler にハンドラを登録し、左クリックだったらSnipping Toolを起動するという処理としました。

private static void CreateNotifyIcon()
{
    // 常駐アプリ(タスクトレイのアイコン)を作成
    var icon = new NotifyIcon();
    icon.Icon = new Icon("iconn.ico");
    icon.ContextMenuStrip = ContextMenu();
    icon.MouseDown += new MouseEventHandler(NotifyIcon1_MouseDown);
    icon.Text = "SnipClipper";
    icon.Visible = true;
}

private static void NotifyIcon1_MouseDown(Object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
	System.Diagnostics.Process.Start("SnippingTool");
    }

}

感想

久しぶりにがっつりしたIDEを触りましたが、最近はずっと VS Code での作業なので、やはり重いなぁと思いました。。次にWindows GUIアプリを作るときはWin APIでやってみようかなぁと思いつつあります。何にせよ軽めの開発環境でできるやつで。

参考

https://amzn.to/3sK6E4P

Discussion