前回はスクリーン全体をキャプチャしました。今回はスクリーン全体ではなく自分で選んだウィンドウをキャプチャできるように改良してみることにします。

デスクトップ上にあるウィンドウを列挙するにはどうすればいいのでしょうか。

Microsoft Docsではこんなサンプルプログラムが紹介されています。

方法: コールバック関数を実装する

まずはメニューがドロップダウンされたらデスクトップ上のウィンドウをメニューのなかから選択できるようにします。

EnumWindowsをどう書くかですが、

取得しなくていいものは無視しています。

メニューがクリックされたらItem_Clickが呼ばれます。メニューのTagを調べればウィンドウハンドルがわかるようにしています。

ウィンドウハンドルがわかったらキャプチャします。

Bitmapを取得する GetBitmapFromhWnd メソッドですが、

これで自分で選択したウィンドウをキャプチャーすることができます。