- PR -

スクリーンキャプチャーの原理について

1
投稿者投稿内容
mia
会議室デビュー日: 2005/10/16
投稿数: 12
投稿日時: 2005-10-17 01:01
はじめまして。
いつもお世話になっております。

キーボードのPrintScreenのような、画面をキャプチャーする仕組みに関して質問があります。
ご存知の方も多いかと思いますが、キーボードのPrintScreenでは、「マウスのカーソル」まではキャプチャーできません。
そもそもマウスのキャプチャーが行われない原因はどこにあるのでしょうか。

私としては、キャプチャーが行われているレイヤー(?)よりも上位に、マウスのカーソルが表示されているのでは。という勝手な憶測をしています(見当違いの可能性はありますが・・・)。
参考までに、User32.dll から SetWindowsHookExを呼び出してマウスイベントを監視する方法を調べたのですが、いまいちキャプチャーに引っかからない原因が分かりません。

ここ2日間あらゆるサイトを回って調べていたのですが、
「通常は表示されないので、このフリーソフトを使えばカーソルもキャプチャーできますよ」
という内容ばかり。どこにも技術的な理由が書いていなかったので、このたび投稿させていただきました。
どなたかご教授いただければ幸いです。
よろしくお願いいたします。


[ メッセージ編集済み 編集者: mia 編集日時 2005-10-17 01:10 ]
jk
ベテラン
会議室デビュー日: 2005/08/19
投稿数: 94
投稿日時: 2005-10-17 01:12
PrintScreenを押した瞬間にマウスカーソルを非表示にしているからでは?
mia
会議室デビュー日: 2005/10/16
投稿数: 12
投稿日時: 2005-10-17 01:35
>jkさん

さっそくのご返答ありがとうございます。
確認してみましたが、PrintScreenを押した瞬間にマウスが消えている様子は見当たりません。
そういう設定になっているからということでしょうか?

[ メッセージ編集済み 編集者: mia 編集日時 2005-10-17 01:37 ]
ようすけ
会議室デビュー日: 2002/07/26
投稿数: 17
投稿日時: 2005-10-17 02:23
PaintShop等でのマウスカーソルを含めたキャプチャーは、
キャプチャーした画像に、マウスの位置とマウスカー
ソルの形状を取得して、書いている気がします。

注:あくまでも、憶測です。


[ メッセージ編集済み 編集者: 影人 編集日時 2005-10-17 02:25 ]
jk
ベテラン
会議室デビュー日: 2005/08/19
投稿数: 94
投稿日時: 2005-10-17 02:33
PrintScreenをずーっと押していても点滅したりしませんか?
私のPCでは押した瞬間に一瞬消えます。これがキャプチャされない原因かどうかはわかりません。

マウスカーソルがキャプチャされないのはWindowsのキャプチャの仕様だと思いますので、キーをフックして処理を横取りする以外はどうしようもないと思います。

昔使っていたPCではマウスカーソルはVRAMに描画せずビデオカードがディスプレイに描画する際に合成しているものもありました。今のPCにそういった仕様のビデオカードがあるかどうかは不明です。

自作プログラムでマウスカーソルもキャプチャするには以下のような手順だと思います。
1.PrintScreenキーが押されるとクリップボードにビットマップイメージが張り付くのでそれを監視。
2.マウスカーソル合成用ワークにビットマップイメージをコピー
3.マウスカーソルのイメージ、座標を取得し2のイメージと合成
4.クリップボードに戻す。(もしくはファイルに保存)

一応フリーウェアを紹介します。マウスのキャプチャも出来るようです。
使ったことないので、使い方はマニュアルを参照してください。
http://www.vector.co.jp/vpack/browse/pickup/pw5/pw005151.html
mia
会議室デビュー日: 2005/10/16
投稿数: 12
投稿日時: 2005-10-17 03:09
>影人さん

レスありがとうございます。
言われてみれば、マウスカーソルのアイコンを変えている人が、あるフリーウェアを使って画面をキャプチャーしたところ、マウスの形状がデフォルトの形状になってしまった。というようなことを聞いたような気がします。影人さんがおっしゃるとおりかもしれません。ありがとうございました!


>jkさん

ご親切にフリーソフトの紹介までしていただいてありがとうございます。
はじめから書くべきであったと反省しておりますが、このようなことを調べようとした理由は、キャプチャーをしてもその画面に写らないようにする手法があるとすれば、どうすれば良いだろうか。ということだったのです。

たまたま、キャプチャーされてもマウスの画像が写らなかったということに注目して、それがヒントにならないだろうかと思い、その根本の仕組みがどうなっているのかをこうして質問してみようと思ったわけです。

ちなみに私のパソコンの場合は、PrintScreenを押しっぱなしにしても点滅も、カーソルが消えたりもしませんでした。jkさんのおっしゃるように、Windowsの仕様の可能性が高いですね。自作ソフトウェアでマウスカーソルの表示方法にも納得しました。ありがとうございました。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2005-10-17 09:37
画面に転送されるべき画像が変わっても、確実に毎回描画されるとは限らないんじゃないでしょうか。
描画はバッファリングされて、処理のスキを狙って(?)描画されるし、
画面への転送は垂直同期によるので、そこでも毎回確実に行くとは限らないし。
1

スキルアップ/キャリアアップ(JOB@IT)