8月
10
まずはコーディング不要な方法から。
以下の方法は Vista/7 に限らず XP でも 8(のデスクトップアプリ)でも同じはずです。8 の Modern アプリ(Metro アプリ)の場合は知らん。
PrintScreen
PrintScreen キーを押すと、画面全体のスクリーンショットがクリップボードに送られます。ここで「画面全体」というのは、マルチディスプレイの場合でも全部のディスプレイの表示内容がディスプレイの配置と同様に取得されるということです。これを「ペイント」か何かで張り付ければ OK です。
ディスプレイの表示領域を結合したものが矩形でない場合は、表示領域全体を囲う最小の矩形の画像として取得できます。例えば 1920×1200 の右に 1280×1024 を上辺がつながるように配置すると、1280×1024 の方の下側に 1280×176 の空きができるわけですが、ここは黒または透明(画像編集ソフトがアルファチャンネルを扱えるかどうかとディスプレイドライバの状態による)になります。
Alt + PrintScreen
Alt と一緒に押すと、フォアグラウンドウィンドウだけのスクリーンショットが取れます。そのほかは PrintScreen の場合と同じです。
「フォアグラウンドウィンドウだけ」といっても、内部処理としては画面全体のスクリーンショットのうちフォアグラウンドウィンドウが占める領域を切り取っているにすぎないので、画面からはみ出している部分は取れません。
フォアグラウンドウィンドウがタスクバーに重なっていると、さらにおかしな結果になります。(切り取り編集したのではなくホントにこの画像が取得される)
まとめ
- 利点
- OS のバージョンに依らない。画面表示がそのまま取れる。
- 欠点
- クリップボードを汚染する。
- 画面からはみ出ている部分のスクリーンショットは取れない(Alt+PrintScreen の場合)。
その2に続く
Vista/7 でスクリーンショット(その2)
今回は、昔から使える、コーディングが必要な方法など。 GetDC(NULL) GetDC() に NULL を渡すと画面全体を表すデバイスコンテキストが取れます。このデバイスコンテキストはマルチディスプレ…