0

OK、誰でもJingがそのオーバーレイフォームでスクリーンショットを撮る方法を説明できますか?フルスクリーンショットを撮り、表示されているすべてのウィンドウハンドルを記録し、フォーム内で特定のhwndを選択できるように見えます。本当でしょうか?もしそうなら、これを達成するための大きなステップは何ですか?単純なピクチャーボックスの場合もあれば、カスタムコントロールがない場合もありますが、スクリーンショットを撮っているときに画面をフリーズする機会はありませんか?

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

4

1 に答える 1

1

私は、Jing が何を使用しているのかを正確に知るには十分ではありません。しかし、2つの基本的なテクニックがあります。1つは、おっしゃる通り、画面をキャプチャして、最上位のボーダレス形式で表示することです。Vista/Win7 Snipping ツールはそのように機能します。これを開始するために必要なコードは、このスレッドの私の回答にあります。

もう 1 つは、おそらく Jing が使用する可能性が高いもので、Spy++ と似ており、ユーザーはマウスを動かしてウィンドウの周りに選択用の四角形を描くことができます。その利点は、ツールの実行中にウィンドウのサイズ変更または非表示に対処できることです。これを実装するには、TransparencyKey プロパティが BackColor の値に設定された画面サイズの最上位フォームを使用します。フクシアは人気のある選択です。OnPaint() メソッドを使用してこのフォームに描画できます。描画はすべてのウィンドウの上に表示されます。ユーザーが指しているウィンドウを知るために、基になるウィンドウを Z オーダーで反復処理するには、P/Invoke (GetWindow) が必要です。GetWindowRect() を使用して、ウィンドウの四角形を取得します。それに加えて、ボーダーサイズについてAeroが横たわっているのを処理するのにいくつかの手間がかかります.

このスレッドの私の回答で、その手法を開始するためのサンプル コードを見つけることができます。

于 2010-07-14T13:51:23.617 に答える