• ベストアンサー

画像の取り込みなんですが

VB最近始めたばかりです。 起動してあるウインドウの全体をjpgなどの画像として取込み、それを保存したいのですが、どうやればいいのかさっぱりわかりません。  わかりずらい質問の仕方かもしれませんが、もしわかる方がいれば教えてください。お願いします

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

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

サンプルです。 クリップボードを使用する方法のサンプルが手元にあったので、それを載せておきます。 クリップボードを使用しない方法は手元にないのですが、todo36さんの載せているサンプルをちょっとだけ改造するときますよ。 ※処理の流れ 1.クリップボードにコピー(関数:fucSnapShot) 2.クリップボードの内容を取得 3.保存 ※必要な物 フォーム コマンドボタン ピクチャボックス Private Type tagKEYBDINPUT   wVk         As Integer   wScan        As Integer   dwFlags       As Long   time        As Long   dwExtraInfo     As Long   bytUnusedPadding(7) As Byte End Type Private Type tagINPUT   type As Long   ki  As tagKEYBDINPUT End Type Private Const INPUT_KEYBOARD = 1 Private Const VK_SNAPSHOT = &H2C Private Const VK_LMENU = &HA4& Private Const KEYEVENTF_KEYUP = &H2 Private Declare Function SendInput Lib "user32.dll" (ByVal nInputs As Long, pInputs As tagINPUT, ByVal cbSize As Long) As Long Private Sub Command1_Click()   '画面をクリップボードにコピーさせる   Call fucSnapShot      With Me     'クリップボードから画像を得る     .Picture1.Picture = Clipboard.GetData          '画像を保存     Call SavePicture(.Picture1.Image, "c:\test.bmp")   End With End Sub Sub fucSnapShot()   Dim inpInfomation(3)  As tagINPUT      ' キー ストロークを作成   With inpInfomation(0)     .type = INPUT_KEYBOARD     .ki.wVk = VK_LMENU   End With   With inpInfomation(1)     .type = INPUT_KEYBOARD     .ki.wVk = VK_SNAPSHOT   End With   With inpInfomation(2)     .type = INPUT_KEYBOARD     .ki.wVk = VK_LMENU     .ki.dwFlags = KEYEVENTF_KEYUP   End With   With inpInfomation(3)     .type = INPUT_KEYBOARD     .ki.wVk = VK_SNAPSHOT     .ki.dwFlags = KEYEVENTF_KEYUP   End With      ' キー ストロークを合成   Call SendInput(3, inpInfomation(0), Len(inpInfomation(0)))      'Windowsに処理を渡す(クリップボードに画像がわたる)   DoEvents End Sub Private Sub Form_Load()   With Me     'フォームの書式設定     .ScaleMode = vbPixels          'ダミーピクチャボックスの書式設定     With .Picture1       .Appearance = 0       .AutoRedraw = True       .AutoSize = True       .BorderStyle = 0       .Visible = False     End With          'コマンドボタン     .Command1.Caption = "実行"   End With End Sub

tetudamon
質問者

お礼

お礼遅くなりました、すいません。 初心者みたいなものなので、解読に時間がかかってますがとても役に立っております。サンプルプログラムまで書いていただき本当にありがとうございます。

tetudamon
質問者

補足

リファレンスブックを買い調べていたのですが、探し出せないので補足です。 えっと、フォームの取り込みはわかったのですが、たとえば、インターネットエクスプローラなどのウインドウ内の画像の取り込みはどのようにしたら良いかわかりますでしょうか。わかりましたら教えてください、お願いします。

その他の回答 (2)

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.3

No.1の補足です DesktopHwnd = GetDesktopWindow() の代わりに DesktopHwnd = form1.hWnd とすれば、form1をBMPに保存できます。

tetudamon
質問者

お礼

補足ありがとうございます。No.1だけでもとても参考になっていたのに、補足までしていただいてとても感謝感激です。ありがとうございます。

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

ずばりなサンプルを見つけました。 何語??

参考URL:
http://www.activevb-archiv.de/vb/VBtips/VBtip0078.shtml
tetudamon
質問者

お礼

とても参考になっています。本当にありがとうございました 補足のほうわかりましたら教えてください。お願いします

tetudamon
質問者

補足

これは、ディスクトップ全体ですよね。これでも良いのですが、フォーム内(ウインドウ内)を画像としてとるにはどうしたら良いのかわかりますか? それから、ずうずうしいですが日本語で書いてあるところ知っていましたら教えてください。 お願いします

関連するQ&A