Technically Impossible

Lets look at the weak link in your statement. Anything "Technically Impossible" basically means we haven't figured out how yet.

1 Push Snap Ver 1.2 - ボタン一押しで、最前面Windowをキャプチャし画像ファイルを保存する。


Zoom Meetingsをはじめとするビデオ・コミュニケーションが、日常利用において何も例外的な存在ではない時代となった。それはオンライン・ミーティングに限らず、大人数が出席する、いわゆるカンファレンスでも用いられている。

カンファレンスの中には、プレゼンテーションを伴う講演でありながら、講演資料を配布しない場合がある。そのような講演中、「この画面はメモしておきたい!」と思った場面ですかさず、Print Screenキーを一押しすれば、指定のフォルダにキャプチャ画像が出力される。

実際のところ、すでに同様の機能を提供するフリーウェアが存在する。しかし、気付いたときには無反応、クラッシュしており、キャプチャしているつもりが全て無駄、というトラブルを度々経験した。

そのような必要性、事情を背景に自作したツールが「1 Push Snap」だ。

この投稿では、そのツールの使い方を紹介する。

1 Push Snap

github.com
このツールはオープンソースで作成しており、C#で記述している。
実行には.NET Framework 4.8を必要とする。

使い方


実行ファイル「1PushSnap.exe」を実行すると、タスクバーにアイコンが表示される。右クリックすると、コンテキスト・メニューが表示される。

  • Information


キャプチャ画像(JPEGファイル)が出力されるフォルダを確認できる。
ユーザー・フォルダ(%userprofile%)をデフォルトの保存先としている。これはメニュ「Save To...」で変更できる。

  • Save To...


キャプチャ画像を保存するフォルダを指定する。

もし画像ファイル出力時に、指定したフォルダが存在していなかった場合は、強制的にユーザー・フォルダへ画像出力する仕様だ。エラー表示ではなく、あくまでも画像ファイルを出力することを最優先としている。

  • Image format


キャプチャ画像の出力フォーマットを指定する。初期状態ではJPEGが選択されている。
次のいずれかのフォーマットを選択できる。

  • Start


このツールはキーボード・イベントを監視する。メニュー「Start」で監視を始める。

監視状態では、アイコンの色が黒からオレンジへ変化する。この状態でPrint Screenキーを押下すると、そのときの最前面Windowがキャプチャされ、その画像が指定のフォルダへ保存される。

  • Stop


キーボード・イベントの監視を中止する。メニュー「Stop」で監視を止める。
監視しない状態では、アイコンの色がオレンジから黒へ変化する。

  • Close

ツールを終了する。

余談-Ver 1.1からの進歩

Ver 1.1のときと同じく、目的の機能は簡単に実装できるものの、その周辺の事柄に対処するために時間を消費させられる。今回は、画像フォーマットを選択するフォームを同時に複数起動させない、つまり絶対に単一フォームでしか表示しない仕掛けに悩まされた。有名なデザインパターンの一つ、シングルトンだ。

そのシングルトンの実装で悩まされたのだが、結局のところ、シングルトンは不要だった。単純に、静的プロパティを活用することで目的は果たせられるのだった。
dobon.net

また問題点解消のため、次の対応を行った。

  • 画像ファイル出力後の不要なオブジェクト消去。:メモリ・リーク対策
  • ファイル名に24時間表記を反映。
次回以降の対応予定
  • キーボード・イベントの監視、中断をボタン操作で切り替える。