ウィンドウズアプリ入門 クリップボードにコピーされたらメッセージを受信する方法

 Windowsアプリでコピーされたときにイベントを取得できると便利です。例えばコピーされた内容を画面に表示したい場合などです。 もちろんタイマーイベントで定期的にポーリングをする方法もありますが、やや無駄な処理かもしれません。

Windowsとしてはコピーされたときのイベントを取得できる仕組みになっていますので使わない手はないと考えます。

上図がこのイベントを処理するためのコードの一部です。まず、Visutal C++でウィンドウアプリを新規作成します。そして以下の部分にコードを追加します。

case WM_CREATE:
    AddClipboardFormatListener(hWnd); //クリップボードの監視開始
    break;

これをウィンドプロシージャに追加します。 この部分は標準ではないのでそのまま追加してください。 このコードでは、ウィンドウが作成されたときに WM_CREATE:が呼ばれて、AddClipboardFormatListenerという関数が呼ばれます。この関数はこのアプリがクリップボードの監視を開始するための物です。

case WM_DESTROY:
    RemoveClipboardFormatListener(hWnd);    //クリップボードの監視終了

既にある WM_DESTROY: という部分にRemoveClipboardFormatListener(hWnd);関数を追加します。この関数はクリップボードの監視を終了するための物です。

case WM_CLIPBOARDUPDATE:
    MessageBox(hWnd, (LPCWSTR)L"情報", (LPCWSTR)L"コピーされました", MB_OK);  //メッセージボックスの表示

最後にこのコードを追加します。これはクリップボードに何かコピーされたら呼び出される、WM_CLIPBOARDUPDATEイベントです。そして、これが呼ばれたらメッセージボックスが表示されます。

以上簡単なコードでした。 これでクリップボードにコピーされたら何か処理を行う準備が出来ました。そのあとはクリップボードの内容を取得して画面表示したりファイルに保存したりできます。 いろいろ応用が出来るので是非使ってみて下さい。

右クリックでクリップボード内の画像をファイル保存する設定

 スクリーンショットやプログラムから画像をコピーしてもそのあとにファイルにしたい場合は画像編集ソフトを起動する必要があり面倒です。ここで Custom Context Menu と PowerShell を使った方法を説明します。 Custom Context Menu はあらか...