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.1 - ボタン一押しで、最前面Windowをキャプチャし画像ファイルを保存する。


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

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

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

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

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

  • 1 Push Snap
    • 使い方
    • 余談-Ver 1.0からの進歩
    • 次回以降の対応予定
続きを読む

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


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

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

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

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

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

  • 1 Push Snap
    • 使い方
    • 問題点と回避策
    • 次回以降の対応予定
続きを読む

C#でのイベントフック - キーボード入力イベントをフックする場合

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

このような時、あると便利なのが画面キャプチャ、スクリーンショットのためのツールだ。特にプレゼンテーション資料が配布されない場合、今まさに移っている画面をメモ代わりにキャプチャする。

Windows標準の操作では、スクリーンショットを取り、画像編集ソフトにコピーし、画像ファイルとして保存する、という手順を経る必要がある。これをボタン一つで、ファイル出力まで完結させたいと思い、とあるフリーウェアを使っていた。そして、これが気づかないうちに無反応になるときがあるのだ。
この現象があまりに頻発するので、ツールを自作することにした。そして作業をしているうちに気付くのだ。スクリーンキャプチャ・ツールは、イベントドリブンなライブラリ呼び出しで完結できるものではなく、Win32 API呼び出しが避けられないことに。それは次の場面で必要とされる。

  1. Active Window(最前面のWindow)を検出する。
  2. 特定キー押下のタイミングを検出する。

この投稿では、2の話題を含めた、イベントフックのコードを紹介する。
なお、ソースコード全体は投稿末尾に掲載している。

  • Hook(フック)
  • 典型的手順 - SetWindowsHookEx
    • idHook
    • lpfn
    • hmod
    • dwThreadId
  • キーボード・フックの例
  • 実装例 - 1 Push Snap
  • 参照
  • ソースコード
続きを読む