0

何週間もの間、私はフォーラム、グーグル、その他の場所を調べてきましたが、今のところ答えが見つかりません。私はコーディングの専門家ではありませんが、楽しみのためにやっています。イライラすることはありますが、それでも忙しくしていますが、解決できない問題に遭遇しました。それが、カーソルの位置や画面をキャプチャする方法です。私のフォームを入れずに?

私が試したこと:

方法 1

AllowTransparency = true;
TransparencyKey = Color.Empty;
Opacity = 99;

これが機能するには、エアロ機能を無効にする必要がありますが、これは良くなく、アプリで必要なものではありません

方法 2:

Opacity = 0;
doCapture();
Opacity = 100;

これにより、タイマーの間隔が 100 またはその他の間隔に設定されている場合にちらつきが発生します。

方法 3:

Hide();
doCapture();
Show();

これにより、上記と同じちらつきが発生します

すべての方法がこのサイトで見つかりました フォームの背後にある画面のスクリーンショットを撮りますか? フォームなしで画面をキャプチャするにはどうすればよいですか? 画面をキャプチャしますが、C# の現在のフォームではありませんか?

方法 4: magnifyer.dll を使用すると、ランダムな黒のキャプチャが発生し、バグが多く、これを完全に機能させることができず、その API について別の質問を投稿するのがおそらく最善です。

ところで、私はWindows 7 64 BITを実行しているMS Visual C# 2010 Expressを使用しています

これまでのところ、最善の方法は最初の方法ですが、エアロを無効にする必要があり、無効にして有効にしたときに画面全体がちらつくため、使用する必要はありません。

フォームが再描画される前に WM_PAINT メッセージまたはその他のメッセージのメッセージをキャプチャする方法はありますか?スクリーンショットを撮り、フォームを再描画しますか? 誰かが私を正しい方向に向けるか、それを実行する方法についての私の理解を超えているので、それを行う方法としていくつかのコードを提供することができれば、WM_PAINTおよびWM_ERASEBKGNDメッセージをキャプチャできますが、何をすべきかわかりませんまたは、そこからどこに行くべきかは、高く評価されます

ありがとうございました

スコット。

4

0 に答える 0