質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.92%

(Windows)アプリの種類によらずウインドウのイメージをキャプチャしたい

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 2,070

score 21

現在、Windowsの「拡大鏡」のように自分自身の下にあるイメージをキャプチャ、もしくは任意のウインドウをキャプチャして処理を施し表示するツールを作成しています。

カラまね(YouTubeのデモ動画)

現在はウインドウのデバイスコンテキストを取得してBitBltでイメージを取り込むような実装をしているのですが、この場合、ストアアプリ、GPUによる描画を行うアプリ(3D系のソフトなど)のキャプチャができない、といった不都合が生じてしまいます。これらを回避しつつキャプチャできる方法、APIはありませんでしょうか。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

0

大昔、Windows3.x の時代に、画面に丸い時計ウインドウを表示させようとして、苦し紛れに
タイマを起動してタイマ処理で以下を実行
①自分を不可視に
②デスクトップを再描画(Invalideteして Update)して、キャプチャ
③自分を再表示
な事をやった記憶がありますが、さすがにいまどきのではこの方法は使えないですよね。(笑)

VISTA以降では、以下の「拡大鏡API」が使用できるようですが、
MSDNの拡大鏡APIのページ(英文)

この中の、Filter List 機能で、独自の機能を実装できませんかね?(試していません。すみません)

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/11/18 21:01

    情報ありがとうございます。
    自分もざっくり閲覧しただけですが、Filterは拡大表示する対象ウインドウを指定するためのもののようです。
    単純にデスクトップ(またはウインドウ)のイメージをビットマップとして取得できるものがほしいのですが、こちらのAPIだと描画までお任せのようですね……。
    まあ自分自身に描画された結果(のビットマップ)にアクセスできるなら何とかなるかもしれませんので候補のひとつとして検討してみます。

    キャンセル

0

一つのアイディアですが、まず、画面全体をキャプチャーして1枚の画像としてメモリに取り込み、それから自分自身のウィンドウを最大化で作成して取り込んだ画像を表示し、それに対して何かするというような方法であれば、いかようにでも処理できると思いますが、どうでしょうか。

動くものをリアルタイムに処理することができませんが、Snipping Toolも切り取ろうとすると止まるので、たぶん同じようなことをしているのだと思います。

追記
画面をキャプチャーするときに自身を非表示にすれば、実行中に「F5で最新の画面に更新」というようなことはできそうです。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/11/19 00:13

    回答ありがとうございます。
    出力を逐一参照し、それを考慮した作業を行う、という使い方をされるので、静止画や紙芝居的な表示では厳しいです。
    フレームレートの不足やレイテンシはある程度妥協するとしても「動く」のは必須ですし、キャプチャのために一瞬非表示になるのが知覚されてしまうのもNGです。

    キャンセル

  • 2015/11/19 00:20

    そうでしたか。確かにそのような用途では私の提案した方法は使えませんね。
    難問です。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.92%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る