• ベストアンサー

ハードコピーをプログラムから操作する

C++Builder Ver5.0でプログラム開発しています。 表示しているウィンドウのハードコピーをプログラムからハードコピーする方法が分かりません。 たぶん、APIをコールするだけだと思うのですが、参考資料がみつかりません。 C++Builder にラッパーも見あたらないのですが、どなたかお教えください。 また、以下の2つの場合にわけて操作したいのですが、、、 1、アクティブウィンドウをハードコピーする 2、スクリーン全体をハードコピーする 以上 よろしくお願いいたします。

  • tig33
  • お礼率80% (21/26)

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★デバイスコンテキストを使うか、SendInput() API を使う。 >たぶん、APIをコールするだけだと思うのですが、参考資料がみつかりません。  ↑  SendInput() API 関数のことかな。 ・スクリーン全体を SendInput() API で『PrintScreen』キーを押した状態にすれば楽に出来ます。  アクティブ・ウインドウも SendInput() API で『Alt』+『PrintScreen』キーを押した状態に  すれば上手くいくかもしれない。  クリップボードにコピーするだけならこれで上手くいきます。  クリップボード以外に出力する場合はデバイスコンテキストより画面を取得する必要があります。  その方法は下の通りです。 >1、アクティブウィンドウをハードコピーする  ↑  手順は  (1)GetForegroundWindow() API でウインドウ・ハンドルを取得  (2)(1)より GetWindowDC() API でウインドウ全体のデバイスコンテキストを取得  (3)デバイスコンテキストよりビットマップのデータを取得してファイルなどに出力 >2、スクリーン全体をハードコピーする  ↑  手順は  (1)GetDC(NULL) でスクリーン全体のデバイスコンテキストを取得  (2)デバイスコンテキストよりビットマップのデータを取得してファイルなどに出力 ・以上。→SendInput() で簡単に出来るでしょう。 参考: http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_win32_sendinput.asp http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_win32_getforegroundwindow.asp

tig33
質問者

お礼

とても丁寧な回答を有り難うございます。 私の目的は、デバイスコンテキストを使う方法ですね。 おかげで簡単に目的を達成できました。 本当に有り難うございました。

その他の回答 (2)

  • aris-wiz
  • ベストアンサー率38% (96/252)
回答No.3

訂正: ×:7デスクトップのデバイスコンテキストハンドルを解放 ○:7対象のデバイスコンテキストハンドルを解放 >SendInput() API 関数 なるほど、と思いました。 タイミング的な問題は無いのか気になるところです。

  • aris-wiz
  • ベストアンサー率38% (96/252)
回答No.2

何でもかんでもAPIがあると思ってはいけません。 そんな便利なAPIは無かったはず。。。(たしか) 大まかな流れだけ。 1保存するスクリーンのサイズを取得 2保存対象のデバイスコンテキストハンドルを取得 3描画用のビットマップハンドルを作成 4対象の画像を3で作成した描画用のビットマップにコピー 5ビットマップオブジェクトを作成 6描画用のデバイスコンテキストハンドルを削除 7デスクトップのデバイスコンテキストハンドルを解放 8ビットマップハンドルを削除 9得られたビットマップオブジェクトを保存 10ビットマップオブジェクトを削除

tig33
質問者

お礼

回答有り難うございます。 デバイスコンテキストを直接操作したこと無いので・・

関連するQ&A

  • C++でExcel操作

    こんにちは。 今度C++でExcelを操作するプログラムを作ることになったのですが、 参考資料などが見つからず困っています。 なにか参考になるようなサイト、本などがありましたら教えてください。 使用するツールはVC++6.0かC++Builder6です。

  • 画面のハードコピー

    自分のパソコン(A)からネットワークで違うパソコン(B)にアクセスして、Bの中に入っている、プログラムの手順書を作りたいのです。 そこでBのアクティブウィンドウをAでハードコピーしたいのですが、どうしてもアクティブウィンドウがBの全画面としてしか認識できず、欲しいウィンドウだけをハードコピーすることができません。 誰かよいフリーソフトを教えて下さい。 Windows2000です。 お願いします。

  • 画面のハードコピーについて

    画面のハードコピーについて Windows XP を使用していますが、今まで開いている画面のコピーは、Prt.Scキーを押して(またはCtrlキーとCを押して)画面を保存し、エクセルなどの貼り付けるページを開いてCtrlキーとVを押せば貼り付けができたように記憶をしていて、実行しても貼り付けができません。何がいけないのでしょうか

  • BIOS画面のハードコピーをとるには??

    windows98の起動パスワードの設定の手順書を作成するため、BIOSの画面ショットをとりたいのですが、 画面のハードコピーはWINDOWSが起動後の操作方法と同じように、「Prtsc」キーで画面ショットを取ることができないのですか? 他に何か良い方法がありましたら、教えてください

  • プログラムを作りたいものがないけれども、

    挫折したと考えたほうがいいのでしょうか? VisualStudio.Netを持っています。 C言語でAPIでウインドウを表示させることとか 基本的なことはお勉強しました。 これでいろいろプログラムを作るぞというところになって作りたいものがなくなりました。 よろしくお願いします。

  • VC++ と C++Builder

    C++の基本的な構造は理解していて、Win32APIを勉強しようとVC++でプログラミングを始めた者です。参考書は猫でもわかるWindowsプログラミングを見ながら勉強しています(難しくてあまり理解出来ていませんが)。 しかし、機能が多すぎたりと使いこなす自信がありません。 C++Builderに変えてみようかと思っているのですが、VC++とC++Builderの違いを教えて下さい。漠然としすぎていてアホっぽい質問ですが・・。 VC++とC++Builderのプログラムの書き方の大きな違いなどはあるのでしょうか? また、みっちり調べたつもりですが無償のBorlandC++Builderが見あたらないのですが・・・。

  • 「Borland C++ Builder 5」で作成したプログラムについて

    「Borland C++ Builder 5」で作成したプログラム(コンポーネント使用)を、Builderを起動せずフリーソフトのようにWindows上で実行させるにはどうすればよいのでしょうか。

  • ハードコピーのコツを教えてください。

    ハードコピーのコツを教えてください。 キングサイズ(5cm)にぎっしりと資料が入っております。 A4、A3サイズ混合。写真。地図。図面。押印書類。薄いマーカーで色づけされたもの。 オートカラーを選択してコピーしても出ない赤色。 会社で使用しているのはコニカミノルタbizhub c550 です。 薄い押印がはいった書類については、下地を濃くすれば写るのですが、図面書類が緑色になってしまうため、 同じ設定で全てを一緒にコピーすることが出来ません。 写真がはいった書類は下地を濃くする必要はないなど。。 書類に応じて皆さん、コピーの仕方を変えているのでしょうか? たくさんの書類(上記のような様々なものが混じっている場合)をコピーするときはどうされていますか? とりあえず印刷してみて、色が変わっていたり、きちんとうつっていないものに 関しては、後で再コピーするのでしょうか? コピーにとてつもなく時間を要しており、少しでも早く仕上げたいと思っております。 どうぞ宜しくお願いします。

  • Windows上のマウス操作をプログラムで実現したい(C,C++,C#)

    Windows上で、マウスで右クリック→ファイル名をコピー→貼り付け という動作をプログラミングによって実現したいのですが、どのようにしたら良いのでしょう? やはり、APIを使うと思うのでC#が適しているかと自分では思っているのですが、CでもC++でもかまいません。 どなたかご教授願えますか?よろしくお願いいたします。

  • ラッパーって何なんでしょう・・・?

    C++を勉強し始めたのですが、何とも難しい言葉が多くて、書いてあることが本当に理解できません。 ラッパーって? ハンドルって?? と、次から次へと理解不能な言葉が・・・ 読んでいるのは、C++Builderの開発者ガイドと、プログラミング言語C++の本です。 具体的なイメージが浮かばず、概念自体もピンときません。 わかりやすい本などあったら教えてください。 また、とりあえずラッパーとハンドルがどうしても気になるので、この2つの意味教えてください!! よろしくお願いします。