WindowsでC++を使用して実行中のアプリケーションのスクリーンショットを撮る最良の(最も簡単な)方法は何ですか?
ウィンドウのデバイスコンテキスト( GetWindowDC()
)を取得し、そこからイメージ( BitBlt()
)をコピーする必要があります。アプリケーションについて他に何を知っているかに応じて、GetWindowDC()
に渡すウィンドウのハンドルを見つけるためにさまざまなメソッドを使用します。
keybd_event 関数のドキュメントには、それを使用してスクリーンショットを撮り、クリップボードに保存できると記載されています。例えば:
keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_SILENT, 0);
私のバージョン(コンピューターにインストールされているVisual Studio 2005のヘルプ)では、2番目のパラメーターを0に設定してデスクトップ全体のスクリーンショットを撮るか、1に設定して現在のアプリケーションのみのスクリーンショットを撮ることができます。
クリップボードバッファーから取り出すことは、読者の練習問題として残しておきます。
ただし、クリップボードに既に存在する画像データはすべてターフになるため、これを行う前に慎重に検討します。
以下に例を示します codeCaptureAnImage(GetDesktopWindow());
を実行して、画面キャプチャを作成できます。