2

画面からピクセルをスクレイピングして(ビデオの形式で)カスタム画面共有形式に記録するWindowsアプリケーションがあります。問題は、ソフトウェア カーソルを使用しているマシンで、SRCCOPY|CAPTUREBLIT を使用して画面からブリットすると (階層化されたウィンドウもイメージに表示されるように)、カーソルが点滅することです

単一のスクリーン ショットの場合、これは問題ではありませんが、複数のスクリーン ショットを立て続けに撮影すると、カーソルが非常に速く点滅し、完全に消えてしまうことがあります。

Windows Media Encoder SDK (codeproject の記事で説明されているように、以下を参照) の使用を検討しましたが、これはカーソルが点滅しないためですが、フレーム データに直接アクセスする方法はないようです。残念ながら、リアルタイム エンコーディングとカスタム フォーマットの両方が必要なため、Windows Media Encoder はこの目的には使用できません。

私は DirectX の方法 (同じ記事で説明されています。以下を参照) も試しましたが、同じ問題に悩まされているようです。

他の誰かがこの問題に遭遇しましたか? これを回避する方法があるはずです。多くの商用画面共有プログラムには、このような問題はありません。

記事: www.codeproject.com/KB/dialog/screencap.aspx

4

5 に答える 5

0

画面とカーソルを別々にコピーしてオーバーレイするだけです。

于 2012-04-30T13:17:33.293 に答える
0

ミラー ドライバの使用についてはどうですか。

于 2009-08-04T22:28:42.293 に答える
0

そうです、ミラーは確かに機能します。ただし、現時点では、管理者権限のないユーザーでインストールする場合のセキュリティとアクセス許可の問題のため、そのアプローチを避けようとしています。間違っていたら訂正してください。しかし、そのような権利なしにドライバーをインストールする方法はないと思います。それに加えて、それは不必要に複雑になるようです。これを行うには、より単純で侵襲性の低い方法が必要です(元の質問でこれについて言及する必要がありました)

于 2009-08-05T03:13:15.057 に答える
0

ちらつきを克服しなければならなかったのは、「手動で」「マウスの独自のコピー」を描画してから、BitBlt 呼び出しを行うか、SRCCOPY だけで BitBlt を呼び出して、その上に表示されている透明なウィンドウを手動でキャプチャすることです。商用のものでそれがどのように行われるかはわかりません (または、Windows Media エンコーダーで行われるようです)。

参照: http://us.generation-nt.com/xp-bitblt-captureblt-option-help-26970632.html

于 2012-04-30T13:06:10.537 に答える
0

Magnification API は Windows Vista 以降で使用できます。Windows XP で良いアイデアが見つかりません。

于 2016-06-21T07:27:39.700 に答える