その買うを、もっとハッピーに。|ハピタス

VBScriptでPrintScreen

VBScriptでPrintScreenを行ないます。
VBScript標準ではPrintScreenは出来ませんので、前回ご紹介したDoodle2を使用します。


http://d.hatena.ne.jp/Shinez/20100802/p1


WindowsのPrintScreenって、微妙に不便じゃないですか??
クリップボードに画像をコピーして、ペイントなり画像編集ソフトに貼りつけて保存。みたいな。
下記VBScriptを使用すると、ちょうどMacのように、画像ファイルがデスクトップに作成されます。
例によって、「ファイル名を指定して実行」から呼び出すと便利です。

'PrintScreen.vbs
Option Explicit

'-----------------------------------------------------
'任意の値に設定
Const WAIT_TIME = 2000
Const BASE_FNAME = "Capture"
Const EXT_NAME = "png" 'BMP/JPG/JPEG/GIF/PNGのみ
'-----------------------------------------------------
Const SCRIPT_NAME = "(´σ `) ホジホジ"
Dim d, objWS, fs
Dim dtop_path, fpath, new_fpath
Dim cnt
Set d = CreateObject("Doodle2.MyCanvas")
Set objWS = CreateObject("WScript.Shell")
Set fs = CreateObject("Scripting.FileSystemObject")

If MsgBox("デスクトップ全体をキャプチャしますか?", vbYesNo + vbQuestion, SCRIPT_NAME) = vbYes Then
    d.CaptureWindow ""
Else
    MsgBox CStr(WAIT_TIME / 1000) & " 秒後にキャプチャします。" & vbCrLf & "キャプチャしたいウィンドウをアクティブにして下さい。", vbInformation, SCRIPT_NAME
    WScript.Sleep WAIT_TIME
    d.CaptureWindow "@ACTIVE"
End If

dtop_path = objWS.SpecialFolders("Desktop") & "\"
fpath = dtop_path & BASE_FNAME & "." & EXT_NAME
If fs.FileExists(fpath) Then
    Do
        cnt = cnt + 1
        new_fpath = dtop_path & BASE_FNAME & " " & CStr(cnt) & "." & EXT_NAME
        If fs.FileExists(new_fpath) = False Then
            d.SaveToFile new_fpath
            Exit Do 
        End If
    Loop
Else
    d.SaveToFile fpath
End If

Set d = Nothing
Set objWS = Nothing
Set fs = Nothing

プログラムの流れと仕様


最初にデスクトップ全体をキャプチャするかどうかを尋ねます。
デスクトップ全体をキャプチャする場合は、そのままデスクトップに画像ファイルが作成されます。
個別ウィンドウをキャプチャする場合(WindowsショートカットのAlt + PrintScreen)は、もう一回ダイアログが開き、その2秒後(標準)にキャプチャしてデスクトップに画像ファイルを作成します。


何度もPrintScreenを行う場合、上書きはせずMacのようにファイル名後方に連番を振ってファイルが作成されます。

ユーザー設定


各種設定が出来ます。

個別ウィンドウキャプチャ時の時間指定


定数「WAIT_TIME」に個別ウィンドウをキャプチャするときの、2回目のダイアログ後の時間指定が出来ます。
単位はms(ミリセカンド)ですので、1秒後にキャプチャしたかったら「1000」、3.5秒後にキャプチャしたかったら「3500」と入力します。
デフォルトは2秒(2000ms)にしてます。

画像ファイル名


定数「BASE_FNAME」で任意の画像ファイル名を指定出来ます。
デフォルトは「Capture」にしてます。

画像ファイルの種類


拡張子を指定するとともに、作成する画像ファイルの種類を指定します。
BMP、JPG、JPEG、GIF、PNGの5つから指定出来ます。
デフォルトは「png」にしてます。



Windows自動処理のためのWSHプログラミングガイド

Windows自動処理のためのWSHプログラミングガイド