ホームページ >バックエンド開発 >C++ >Win32 API を使用して Windows アプリケーションのスクリーンショットをキャプチャするにはどうすればよいですか?

Win32 API を使用して Windows アプリケーションのスクリーンショットをキャプチャするにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-05 22:12:171006ブラウズ

How Can I Capture a Windows Application Screenshot Using the Win32 API?

Windows アプリケーションのスクリーンショット キャプチャ

Windows プログラミングでは、現在の画面のスクリーンショットをキャプチャすることが一般的な要件です。この目的のために、Win32 API は、画面のビットマップ表現を取得するために必要な関数を提供します。

Win32 スクリーンショット コード

Windows アプリケーションでスクリーンショットを取得するには、次のコマンドを使用します。 Win32 の場合は、次の手順に従います。

HDC hScreenDC = GetDC(nullptr);

全体のデバイス コンテキストを取得します。

HDC hMemoryDC = CreateCompatibleDC(hScreenDC);

画面のビットマップをコピーするための互換性のあるデバイス コンテキストを作成します。

int width = GetDeviceCaps(hScreenDC,HORZRES);
int height = GetDeviceCaps(hScreenDC,VERTRES);

画面の幅と高さをピクセル単位で取得します。

HBITMAP hBitmap = CreateCompatibleBitmap(hScreenDC,width,height);

画面イメージを保持する互換性のあるビットマップを作成します。

HBITMAP hOldBitmap = static_cast<HBITMAP>(SelectObject(hMemoryDC,hBitmap));

互換性のあるビットマップを選択してくださいビットマップを互換性のあるデバイス コンテキストにコピーします。

BitBlt(hMemoryDC,0,0,width,height,hScreenDC,0,0,SRCCOPY);

ビット ブロック転送 (BitBlt) を使用して、画面イメージを互換性のあるビットマップにコピーします。

hBitmap = static_cast<HBITMAP>(SelectObject(hMemoryDC,hOldBitmap));

以前のビットマップ選択をメモリ デバイスに復元します。 context.

DeleteDC(hMemoryDC);
DeleteDC(hScreenDC);

両方のデバイス コンテキストを削除してリソースを解放します。

以上がWin32 API を使用して Windows アプリケーションのスクリーンショットをキャプチャするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。