• ベストアンサー

範囲を指定してその部分のキャプチャをとる。

VB6.0(SP5)なのですが、画面のキャプチャを取りビットマップイメージで保存するというプログラムを組んでおります。 そこでやりたいのが、指定範囲された所のみのキャプチャを取りたいのですが、コードサンプルを検索してもなかなか見つかりません。知っている方教えてください。

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

あらかじめピクチャーボックスを2つ用意しておいて、 一旦クリップボードの内容をピクチャーボックスに入れて、PaintPictureメソッドで範囲を指定してもうひとつのピクチャーボックスにコピーしてから保存すればいいかな? http://www005.upp.so-net.ne.jp/h-masuda/ProText/vb6first/pict031.html #保存まではしてませんが。

y_thiro
質問者

お礼

早速試してみました。 教えていただいた内容でプログラムが完成しそうです。 また、何か機会があれば宜しくお願いいたします。 本当に有難うございました。

その他の回答 (1)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

>そこでやりたいのが、指定範囲された所のみのキャプチャを取りたいのですが、コードサンプルを検索してもなかなか見つかりません。 ちなみに範囲指定してないもののサンプルは見つかったんですか? それを出して範囲指定するにはどうすればいいか質問したほうがy_thiroさんも理解しやすい回答が得られると思いますよ。

y_thiro
質問者

お礼

taka_tetsu さん御指導有難うございます。 確かに私の投稿では回答しづらいと思いました。(投稿初心者なもので・・・)これからは、回答しやすい投稿にするように勉強しますので宜しくお願い致します。

y_thiro
質問者

補足

taka_tetsu さん御指導有難うございます。 現在は、下記のプログラムで画面全体のハードコピーを取って保存しているのですが、そこであらかじめ決めておいた座標の範囲だけのハードコピーをとりたいのです。宜しくお願い致します。 Private Declare Sub keybd_event Lib "user32.dll" _ (ByVal bVk As Byte, ByVal bScan As Byte, _ ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Private Const VK_SNAPSHOT = &H2C 'PrintScreen キー Private Const KEYEVENTF_KEYUP = &H2 'キーはアップ状態 Private Const KEYEVENTF_EXTENDEDKEY = &H1 'スキャンコードは拡張コード Public Function fncSaveWindowPic() As String Dim MyFileName As String, PicData As Picture, OsVer As Single Clipboard.Clear OsVer = CreateObject("SysInfo.SYSINFO").OSVersion 'OSのヴァージョン If OsVer < 5 Then '画面全体のスナップショットを取得する(Win98SE/Win95) Call keybd_event(VK_SNAPSHOT, 1, KEYEVENTF_EXTENDEDKEY, 0) Call keybd_event(VK_SNAPSHOT, 1, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0) Else '画面全体のスナップショットを取得する(WinXP) Call keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY, 0) Call keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0) End If DoEvents 'クリップボード内にビットマップ形式のデータがあるか調べる If Clipboard.GetFormat(vbCFBitmap) Then 'ファイル名を自動生成 MyFileName = App.Path & "\" & Format$(Now, "yymmddhhmmss") & ".BMP" '表示データーをビットマップ形式のデータで保存 Set PicData = Clipboard.GetData Call SavePicture(PicData, MyFileName) Else MsgBox "保存出来ませんでした。" End If Clipboard.Clear fncSaveWindowPic = MyFileName End Function

関連するQ&A