掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
自アプリ以外の背景取得、キャプチャーするには? (ID:45328)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
フォームのAlphaBlendをTrueにしてコピー。 これだけ。 procedure TForm1.Button1Click(Sender: TObject); var l_Desktop : HDC; begin Image1.Picture.Bitmap.Width := Screen.DesktopWidth; Image1.Picture.Bitmap.Height := Screen.DesktopHeight; l_Desktop := CreateDC('DISPLAY', nil, nil, nil); try //レイヤードウィンドウは第9引数にCAPTUREBLTを追加しないとコピーされないことを利用 BitBlt( Image1.Picture.Bitmap.Canvas.Handle, 0, 0, Image1.Picture.Bitmap.Width, Image1.Picture.Bitmap.Height, l_Desktop, Screen.DesktopLeft, Screen.DesktopTop, SRCCOPY ); Image1.Refresh; finally DeleteDC(l_Desktop); end; end; AlphaBlendをTrueにすることでフォームはレイヤードウィンドウになります。 そしてBitBlt APIは第9引数にCAPTUREBLTを追加しないとレイヤードウィンドウをコピーできません。 ということで、このやり方で自身以外をキャプチャすることが可能なのですが、他のソフトがレイヤードウィンドウであった場合に対応できない欠点があります。 (他にレイヤードウィンドウのアプリがあった場合そのアプリもコピーされない)
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.