画面キャプチャアプリを作っています。
アクティブなウィンドウをキャプチャする方法については回答がありますが、アクティブでなくてもマウスの下のウィンドウをキャプチャできるようにしたいと考えています。
マウスの下のウィンドウのハンドルを見つけてImage.captureWindow(IntPtr handle)を呼び出す必要があることを正しく理解していますか?
画面キャプチャアプリを作っています。
アクティブなウィンドウをキャプチャする方法については回答がありますが、アクティブでなくてもマウスの下のウィンドウをキャプチャできるようにしたいと考えています。
マウスの下のウィンドウのハンドルを見つけてImage.captureWindow(IntPtr handle)を呼び出す必要があることを正しく理解していますか?
次の関数を使用して、画面のコンテキストでカーソル位置を取得します
POINT p;
if (GetCursorPos(&p))
{
//cursor position now in p.x and p.y
}
ここで、EnumWindow 関数を使用してすべての最上位ウィンドウを列挙し、それぞれに対してこれを試す必要があります。
if (ScreenToClient(hwnd, &p))
{
//p.x and p.y are now relative to hwnd's client area
}
ウィンドウに対して両方の値が正の場合、それはカーソルがあるウィンドウです。ハンドルからウィンドウをキャプチャする方法の例を次に示します
http://www.codeproject.com/Articles/19192/How-to-capture-a-Window-as-an-Image-and-save-it
これがお役に立てば幸いです