起動しているウィンドウのサムネイルを作成するには?

解決


やん  2013-06-07 11:44:41  No: 73700

はじめて投稿いたします。

Win7などにある、タスクバーのサムネイル表示を可能とするツールを開発しようと思っておりますが、実現方法がわからないため、ご教授ください。
環境はXPです。
開発環境で手元にあるのはVC++6.0ですが、それ以外でも構いません。

色々調べてみたのですが、検索方法が悪い為か、開発する上での情報が得られませんでした。(サムネイル表示を可能とするツールは出てくるのですが・・)
どのような方法で他のアプリのイメージを取得しているのでしょうか?

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


zeek  2013-06-11 07:18:49  No: 73701

私は PrintWindow() を使用しています。
ただし、対象 OS は Vista 以降の場合に機能させています。
(XP でうまく動作しなかったのかもしれませんが記憶していません。単に code をそうしている事実があるだけです)

http://msdn.microsoft.com/ja-jp/library/cc422018.aspx
こちらを見ると XP でも動作可能なのかもしれません。


やん  2013-06-12 10:16:50  No: 73702

zeek様
アドバイスありがとうございます。
早速PrintWindowを調べてみました。
確かに私が欲しかった情報でした。
ありがとうございます。

ただし、調べている上で気になったのですが、PrintWindowは最小化されているウィンドウのキャプチャは取得できないのでしょうか?

調べていると簡単にはできないといった内容にでくわすことがあり・・。


zeek  2013-06-13 08:57:34  No: 73703

> PrintWindowは最小化されているウィンドウのキャプチャは取得できないのでしょうか?
最小化されているウィンドウは、最小化されているからかタイトルバーのイメージが取得されますね。
それが仕様と思って使っています。
タスクバーのサムネイル表示では最小化しているウィンドウは、アイコンを中央に表示するだけですね。
同じようにするのでは問題なのでしょうか?
もし、強引に行うのであれば、試していませんが、GetWindowPlacement() で情報を取得&退避し、SetWindowPlacement() で最小化解除時のウィンドウ位置をデスクトップ外に変更した上で最小化解除しウィンドウイメージを取得する。その後最小化した後に SetWindowPlacement() で情報を元に戻す、というアプローチぐらいかもしれません。
この場合、操作者による最小化解除とぶつからないと言えないと問題になりそうですが...


やん  2013-06-18 10:49:32  No: 73704

zeek様
返信が遅くなり申し訳ありません。
win7のタスクバーのイメージがどうなっているか確認してみましたが、
指定windowが開いていたらそのイメージを(動作再生中なら再生の状態)、最小化になったら最小化直前のイメージを(動画再生中でも静止画)出していました。最小化状態でイメージが取得できないときにはタイトルバーのイメージだったので、printwindowで実現できそうです。

ありがとうございました。


やん  2013-06-19 10:37:38  No: 73705

解決チェック忘れていました

zeek様、今後ともアドバイスいただけたらと思います。

ありがとうございました。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加