42

Windows で C++ を使用して実行中のアプリケーションのスクリーンショットを撮る最良の (最も簡単な) 方法は何ですか?

4

5 に答える 5

30

ウィンドウのデバイス コンテキストを取得しGetWindowDC()( )、そこからイメージをコピーする ( BitBlt()) 必要があります。アプリケーションについて他に何を知っているかに応じて、さまざまな方法を使用して、どのウィンドウのハンドルを に渡すかを見つけますGetWindowDC()

于 2009-02-10T09:56:02.957 に答える
13

GetDC(NULL)+BitBlt()

半透明/アルファ/レイヤード ウィンドウをキャプチャするには、CAPTUREBLTフラグをBitBltに渡す必要があります。これを行うと、カーソルが点滅します。この technet 記事を読んで理由を確認してください。

NT6+ では、Magnification APIを使用して必要なことを実行できる場合があります。

于 2010-04-09T11:37:01.690 に答える
3

keybd_event 関数のドキュメントでは、それを使用してスクリーンショットを撮り、クリップボードに保存できると記載されています。例えば:

keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_SILENT, 0);

私のバージョン (私のコンピューターにインストールされている Visual Studio 2005 ヘルプ) では、2 番目のパラメーターを 0 に設定するとデスクトップ全体のスクリーンショットを撮ることができ、1 に設定すると現在のアプリケーションだけのスクリーンショットを撮ることができると記載されています。

クリップボード バッファからの取り出しは、読者の課題として残されています。

ただし、クリップボードに既に存在する画像データが芝刈りされるため、これを行う前に慎重に検討します。

于 2009-03-03T07:16:07.607 に答える