VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

リンク元へ戻ります。 クリップボード関係のメニュー
1.VB6.0からクリップボードを利用する
2.ショートカットを操作してのコピー・貼り付け・切り取り・元に戻す
3.スナップショットをファイルに保存及び印刷
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.


3.スナップショットをファイルに保存及び印刷
1.スナップショットをファイルに保存及び印刷
2. 
3. 
4. 
5. 
6. 

 下記プログラムコードに関する補足・注意事項 
動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6)
Option :[Option Explicit]
参照設定:SendInputV6                  参照設定方法参照
使用 API:
その他 :このサンプルは、 Win32 APIを使用しておりますので、ある程度Win32 API が理解できる方がお使い下さい。
    :
このページのトップへ移動します。 1.スナップショットをファイルに保存及び印刷

Option Explicit

'デスクトップウィンドウのハンドルを取得します。
Private Declare Function GetDesktopWindow Lib "user32" () As Long

Private Sub Command1_Click()
'スクリーン全体をクリップボードにコピー
  Dim Myhwnd As Long
  Dim SI As New SendInputV6.Class1
  Clipboard.Clear
  Call SI.WaitTime(500)
  'DesktopWindow のハンドルを取得
  Myhwnd = GetDesktopWindow
  If Myhwnd <> 0 Then
    '指定のウィンドウをアクティブにする(最小化の場合は元のサイズで表示)
    Call SI.fSetForGrdWindow(Myhwnd)
    'MsgWaitForMultipleObjects API を使っての安全な待機関数(ミリ秒単位で指定)
    Call SI.WaitTime(500)      'その間、0.5秒待つ(最小化になっている場合もあるので)

    '下記のように実行したいキー操作をマクロの記録のように書き込んで下さい。
    Call SI.KeyReSet        'キー操作の初期化(使用した変数等の初期化)
    Call SI.KeyDown(vbKeySnapshot) 'PrintScreen キーの押し下げの動作を記録(実際の操作は行われない)
    Call SI.KeyUp(vbKeySnapshot)  'PrintScreen キーの解放の動作を記録
    Call SI.KeyStroke        '上記一連のキー操作を一括で実行(ここで初めてキー操作を実行)
    Call SI.WaitTime(500)      'クリップボードにコピーされるまで待つ
    Call sPrintOut(True)      'クリップボードの画像の保存及び印刷
  End If
End Sub

Private Sub Command2_Click()
'アクティブウィンドウのみをクリップボードにコピー
  Dim Myhwnd As Long
  Dim SI As New SendInputV6.Class1
  Clipboard.Clear
  'アクティブウィンドウのハンドルを取得する
  Myhwnd = SI.fGetForGrdWindow(2000)
  If Myhwnd <> 0 Then
    Call SI.fSetForGrdWindow(Myhwnd)
    Call SI.WaitTime(500)
    Call SI.KeyReSet
    Call SI.KeyDown(vbKeyMenu)   'Alt キーを操作
    Call SI.KeyDown(vbKeySnapshot) '
    Call SI.KeyUp(vbKeySnapshot)
    Call SI.KeyUp(vbKeyMenu)
    Call SI.KeyStroke
    Call SI.WaitTime(500)
    Call sPrintOut(True)
  End If
End Sub

Private Sub sPrintOut(ByVal PrintOn As Boolean)
  Dim MyFileName As String, PicData As Picture
  'クリップボード内にビットマップ形式のデータがあるか調べる
  If Clipboard.GetFormat(vbCFBitmap) Then
    'ファイル名を自動生成
    MyFileName = App.Path & "\" & Format$(Now, "yymmddhhmmss") & ".BMP"
    '表示データをビットマップ形式のデータで保存
    Set PicData = Clipboard.GetData
    Call SavePicture(PicData, MyFileName)
    If PrintOn Then
      '印刷する場合
      With Printer
        .ScaleMode = vbMillimeters
        .PaperSize = vbPRPSA4
        .Orientation = vbPRORLandscape
        .PaintPicture PicData, 10, 0
        .EndDoc
      End With
    End If
  Else
    MsgBox "保存出来ませんでした。"
  End If
End Sub



スクリーンのスナップショットをクリップボードに保存及び印刷を今回の見直しを機に、SendInputV6を使って作り直しました。(keybd_event API を使っている事やコード自体が今となっては、少しお粗末な事もあり)

このページのトップへ移動します。 2. 


このページのトップへ移動します。 3.


このページのトップへ移動します。 4.


このページのトップへ移動します。 5.


このページのトップへ移動します。 6.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)
スクリーンのスナップショット コピー キャプチャ ハードコピー アクティブウィンドウ デスクトップウィンドウ




このページのトップへ移動します。