フォームを画像として保存するには?

解決


シンヤ  2004-06-24 16:21:28  No: 114230  IP: [192.*.*.*]

お世話になっております。

表記のとおり、ある処理が終了するたびに
フォームを画像として保存したいのですが、
やり方が分かりません。
.PrintFormを使うとプリンターに出力できる
みたいなんですが、プリンター出力ではなく、
画像ファイルとして保存したいのです。
ファイルの形式はなんでもいいです。

どなたか分かる方がいらっしゃいましたら
よろしくお願いします。

編集 削除
S.S  2004-06-24 17:11:51  No: 114231  IP: [192.*.*.*]

プリントスクリーンでクリップボードにコピーして、BMPファイルで保存してはいかがでしょう?

編集 削除
シンヤ  2004-06-24 17:24:41  No: 114232  IP: [192.*.*.*]

手順は全くそのとおりなんですが、
プログラムの中からその作業を行うことは可能でしょうか?
方法を知ってましたら教えてください。

編集 削除
S.S  2004-06-24 17:53:07  No: 114233  IP: [192.*.*.*]

ちょっと手元に資料が無いんで適当な方法ですがw

SendKeys "+{PRTSC}" 'プリントスクリーンを実行
DoEvents 'いらないかも?

'画面にピクチャーボックスを貼り付けてください。
'全画面に貼り付けるのが面倒ならば何かフォームを作って、そこに貼り付け
'終了のタイミングでLoadしてください。非表示でもかまわないと思います。
'それでそのピクチャーボックスに画像(クリップボードより)を表示
PictureBox1.Image = Clipboard.GetDataObject.GetData(DataFormats.Bitmap)

あとはその画像を保存するだけです。保存の仕方はHelp参照でお願いします(^^
それと、試してません。。。

編集 削除
S.S  2004-06-24 17:53:56  No: 114234  IP: [192.*.*.*]

すみません、ちょっと.Netの記述が混じってるかも・・・

編集 削除
nanashi  2004-06-24 18:02:42  No: 114235  IP: [192.*.*.*]

APIのkeybd_eventでキーストロークをシミュレートすれば出来ます。
SendKeysでは出来ないと思います。

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 As Long = &H2C&
Private Const KEYEVENTF_KEYUP As Long = &H2&

Private Sub Command1_Click()
    Dim lScanCode As Long
    
    lScanCode = 1 'Win9x : 0, WinNT : 1
    
    Clipboard.Clear
    Call keybd_event(VK_SNAPSHOT, lScanCode, 0, 0)
    Call keybd_event(VK_SNAPSHOT, lScanCode, KEYEVENTF_KEYUP, 0)
    
    DoEvents
    
    Call SavePicture(Clipboard.GetData(vbCFBitmap), "C:\test.bmp")
End Sub

編集 削除
シンヤ  2004-06-24 18:51:07  No: 114236  IP: [192.*.*.*]

出来ました!!

お二人とも、有難うございました。
無事、画像として保存することが出来ました。

お世話になります。

編集 削除