パソコンでトラブルが発生した際、起きていることを把握するために「スクリーンショットがあれば…」と思う場面がよく起きます。 しかし、パソコンを使っている人がコンピュータに精通した人ではない場合、「スクリーンショットを撮り、ファイルに保存、保存したファイルをメールで送信する」という一連の流れを行うことが困難なことがあります。
最近、そのようなことが重なったので、OSの起動時にシステムに常駐し、PRINT SCREENキーが押されたタイミングでスクリーンショットの撮影とファイル保存、指定アドレスへ送信するプログラムを作りました。
上記の機能以外の機能は、アプリケーションの終了だけです。
間違ってPRINT SCREENキーが押されたときでも、確認ダイアログの表示など一切なく自動的にメールが送信されてしまうので、導入環境と使用方法にはご注意ください。
アプリケーションが起動している状態で、PRINT SCREENキーを押すとSCREENSENDER.INIで設定されたアドレスに撮影されたスクリーンショットが送信されます。
タスクトレイに表示されている「ScreenSender」のアイコンを右クリックし、「終了」を左クリックするとアプリケーションが終了します。
プログラム的には、Win 32 APIのグローバルフック(SetWindowsHookEx)を使いPRINT SCREENキーが押下されるのを監視、押されたらキャプチャ(System.Drawing.GraphicsクラスのCopyFromScreenメソッド)し保存、画像ファイルをSystem.Net.Mail.MailMessageクラスとSystem.Net.Mail.SmtpClientクラスの機能を使って送信という、いたってシンプルな構成です。
使っているAPIが少ないので古いバージョンの.NET Framework(.NET Framework 2くらいから?)でも動くのではないかと思います。
最初は、導入しようとした先で使用されているWindows Live Mailの画面を開くところまでを自動で行い、最終的な文言の編集と送信は人間が行うという風にしたかったのですが、Live Mailを呼び出す方法がわからず一気に送信する方式になってしまいました(^^;)
Please give us your valuable comment