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

 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イベントです。そして、これが呼ばれたらメッセージボックスが表示されます。

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

簡単に手持ちのC,C++の処理に進捗バーを実装する方法

 C言語やC++で何か処理を書ける人は多いですが、Windowプログラムとなると実装方法が難しいです。VisualStudioのプロジェクトの雛形にボタンを配置し、そこから手持ちのコードを起動すれば動きそうです。 しかし、その方法では「未応答」状態になったり、ウィンドウの操作すら...