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

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

DDD
リリース: 2024-12-05 22:12:17
オリジナル
1011 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート