6

そのため、PIL を使用してデスクトップのスクリーンショットを取得し、pywin32 を使用してその四角形を取得し、必要な部分を切り取ることができます。ただし、必要なウィンドウの前に何かがあると、スクリーンショットが必要なアプリケーションが遮られます。アプリケーションが現在表示しているウィンドウを取得する方法はありますか? 他のウィンドウがその前にある場合でも、そのデータはどこかにあります。

4

7 に答える 7

3

ここの回答に作業コードを投稿しました:非アクティブウィンドウのスクリーンショット PrintWindow + win32gui。機能を利用していPrintWindowます。これは、非表示のウィンドウのイメージをコピーする「正しい」方法ですが、常に機能するとは限りません。WM_Print適切なメッセージ、応答を実装するプログラムに依存します。

使用しようとしてPrintWindowもうまくいかない場合、残りの唯一のオプションは、BitBlit.

于 2014-06-22T17:33:40.680 に答える
3

ショットを撮る前に、アプリケーションにフォーカスを与えることで、同じことを行いました。

shell=win32com.client.Dispatch("Wscript.Shell")
success = shell.AppActivate(app_name) # Returns true if focus given successfully.
于 2009-07-03T21:13:01.610 に答える
2

関数を使用してこれを行う方法がありPrintWindowます。ウィンドウが別の面に再描画されます。

于 2010-08-27T16:01:46.437 に答える
1

可能であれば、ウィンドウの順序を保存してから、アプリを前面に移動し、スクリーンショットを作成して、すぐに元に戻します。少し厄介なちらつきが発生する可能性がありますが、何もないよりはましかもしれません.

于 2009-07-03T20:33:26.243 に答える
1

アプリを画面外に配置して、スクリーンショットを撮り、元に戻すことができますか?

于 2009-08-13T05:03:47.640 に答える
0

WindowsプレビスタではなくIIRC-Aeroでは、各ウィンドウに独自のバッファーがありますが、その前に、長方形を取得する方法を使用するだけです。pywin32 が Aero をサポートしているかどうかはわかりません。

于 2009-07-03T20:28:31.463 に答える