ウインドウイメージのキャプチャ方法 – プログラミング – Home

ウインドウイメージのキャプチャ方法
 
通知
すべてクリア

[解決済] ウインドウイメージのキャプチャ方法


DIO
 DIO
(@DIO)
ゲスト
結合: 18年前
投稿: 62
Topic starter  

こんにちは。早速ですが質問です。

作りたい機能が実現できそうか相談に乗ってください。

実現したい機能は
・そのとき起動中すべてのウインドウのサムネイル?を一覧表示したいのです。

ここで言う「起動中のウインドウ」とはAlt+tabで認識されるものです。

そのために考えた手順として、
1.起動中のウインドウハンドルをとる。
2.ハンドルからGetWindowDCでDCを取得
3.メモリDCをはかせる
4.最描写させる
5.サムネイル(画面イメージ)Get!!
としようとしました。

ここで質問ですが、

1.外部から強制再描写できるのか
2.もともと隠れているウインドウ(タスクバーに格納 含)の場合メモリDCにウィンドウ
は描写されるのか?
3.そもそもウインドウハンドルから上の案でサムネイルが取得できるのか?
4.上の案に足りない操作や、考慮していない問題点

をよろしくお願いします。

デスクトップ画面から切り抜くことも考えたのですが
すべてのウインドウをいちいち表面に持ってくるのもなんだか変だと思い上記の案でとり
あえずチャレンジ中です。

また、Windowsの画面描写はどのように行われているか
参考時なる資料などもありましたらあわせて教授願えますよう
よろしくお願いします。

環境: winXP VS2005 MFC


引用未解決
トピックタグ
超初心者
 超初心者
(@超初心者)
ゲスト
結合: 23年前
投稿: 139
 

WM_PRINTっていうのがある。

俺、
昔ちょっとダイアログで自分のウィンドウにやってみたが
ずれたものが得られた経験がある。
それっきりつかったこと無い。
別アプリでも成功するのか知らない。
最小化ウィンドウでどうなるか知らない。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

「WM_PRINT」でぐぐると結構でてきますね。


返信引用
DIO
 DIO
(@DIO)
ゲスト
結合: 18年前
投稿: 62
Topic starter  

>超初心者さん、ITOさん

ありがとうございます。

WM_PRINTですね。
調べてみます。


返信引用
ドルドル
 ドルドル
(@ドルドル)
ゲスト
結合: 19年前
投稿: 96
 

DIOさん。おはようございます。

>実現したい機能は・そのとき起動中すべてのウインドウのサムネイル?・・・・
 サムネイル==ウィンドウの画面という解釈でいいのでしょうか??
 起動中のすべてのウィンドウのキャプチャーはしたことがあります。それなりに苦労
しましたよ。わかる範囲で回答させていただきます。

>2.もともと隠れているウインドウ(タスクバーに格納 含)の場合メモリDCにウィンド
>ウは描写されるのか?
 描写されるのか?とは正常にメモリDCに展開できるのか??ってことでしょうか?た
ぶんこれらのDCは取得しても、DIOさんが期待したDCは取得できていないはず

>4.上の案に足りない操作や、考慮していない問題点

i) 例えば AのウィンドウとBのウィンドウが重なっている場合、キャプチャーしたい
ウィンドウを最前面にもってこないといけない。つまりキャプチャーしていくと最前面
ウィンドウがころころ切り替わる感じになると思います。

ii) i)に関連することで 最小化やタスクバーに格納されている場合は当然 元のサイズ
に戻す必要がある。

iii) ウィンドウもしくはその一部が画面からはみ出している場合は そのはみ出し部
分のDCも取得できないのでキャプチャーする場所の考慮が必要。私の場合は無難にキャ
プチャーしたいウィンドウを(0,0)に移動させました。

iv) 起動中のウィンドウのハンドルをどのように取得するのですか??また起動中かど
うかをどのように判別するように考えられているのでしょうか??

v) MDI形式のウィンドウの子ウィンドウも取得するのか?どうか?

私の思いつく範囲はこれぐらいですかね??また間違いとかあれば指摘してください。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

XP以降でしか動作しなくてもよいのであれば、PrintWindowというAPIがあります。
これなら、隠れているウィンドウも取得できるっぽい。

http://msdn2.microsoft.com/en-us/library/ms535695.aspx
http://www.microsoft.com/japan/msdn/windows/windowsxp/xpvisualstyles.aspx


返信引用
DIO
 DIO
(@DIO)
ゲスト
結合: 18年前
投稿: 62
Topic starter  

>ドルドルさん
ありがとうございます。
ひとつづつ、確認しましたが、おっしゃるとおりでした。

どの道、位置合わせして、再表面に持ってくるのならば、
デスクトップ切り取ったほうが軽いのでしょうか?

>シャノンさん
PrintWindowすごいですね。
サブウインドウまで取ってくれてました。
ただ、タスクバーのなかにあるものはやはり取れず、
一工夫は必要のようです。

相談に乗っていただきありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました