- ベストアンサー
画像の取り込みなんですが
VB最近始めたばかりです。 起動してあるウインドウの全体をjpgなどの画像として取込み、それを保存したいのですが、どうやればいいのかさっぱりわかりません。 わかりずらい質問の仕方かもしれませんが、もしわかる方がいれば教えてください。お願いします
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
サンプルです。 クリップボードを使用する方法のサンプルが手元にあったので、それを載せておきます。 クリップボードを使用しない方法は手元にないのですが、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
その他の回答 (2)
- todo36
- ベストアンサー率58% (728/1234)
No.1の補足です DesktopHwnd = GetDesktopWindow() の代わりに DesktopHwnd = form1.hWnd とすれば、form1をBMPに保存できます。
お礼
補足ありがとうございます。No.1だけでもとても参考になっていたのに、補足までしていただいてとても感謝感激です。ありがとうございます。
- todo36
- ベストアンサー率58% (728/1234)
ずばりなサンプルを見つけました。 何語??
お礼
とても参考になっています。本当にありがとうございました 補足のほうわかりましたら教えてください。お願いします
補足
これは、ディスクトップ全体ですよね。これでも良いのですが、フォーム内(ウインドウ内)を画像としてとるにはどうしたら良いのかわかりますか? それから、ずうずうしいですが日本語で書いてあるところ知っていましたら教えてください。 お願いします
お礼
お礼遅くなりました、すいません。 初心者みたいなものなので、解読に時間がかかってますがとても役に立っております。サンプルプログラムまで書いていただき本当にありがとうございます。
補足
リファレンスブックを買い調べていたのですが、探し出せないので補足です。 えっと、フォームの取り込みはわかったのですが、たとえば、インターネットエクスプローラなどのウインドウ内の画像の取り込みはどのようにしたら良いかわかりますでしょうか。わかりましたら教えてください、お願いします。