AutoItを使用してボタンを押すと指定されたブラウザのウィンドウのスクリーンショットを連写キャプチャします。
設定した内容を保存できる改良版です

プログラム
#include <GUIConstantsEx.au3>
#include <ScreenCapture.au3>
#include <MsgBoxConstants.au3>
Global $iniFile = @ScriptDir & "\ScreenCapture.ini"
Global $saveFolder = "C:\app\FirefoxPortable\Screenshots"
Global $burstCount = 3
Global $burstInterval = 2000
Global $batchFile = "C:\app\FirefoxPortable\zip.bat"
Global $posX = @DesktopWidth - 170
Global $posY = 0
If FileExists($iniFile) Then
$saveFolder = IniRead($iniFile, "Settings", "SaveFolder", $saveFolder)
$burstCount = IniRead($iniFile, "Settings", "BurstCount", $burstCount)
$burstInterval = IniRead($iniFile, "Settings", "BurstInterval", $burstInterval)
$batchFile = IniRead($iniFile, "Settings", "BatchFile", $batchFile)
$posX = IniRead($iniFile, "Settings", "PosX", $posX)
$posY = IniRead($iniFile, "Settings", "PosY", $posY)
EndIf
Global $browserMap = _
[ _
["Firefox", "[CLASS:MozillaWindowClass]"], _
["Chrome", "[CLASS:Chrome_WidgetWin_1]"], _
["Edge", "[CLASS:Chrome_WidgetWin_1]"] _
]
Local $winWidth = 170
Local $labelW = 40
Local $inputW = 120
GUICreate("SS", $winWidth, 200, $posX, $posY)
;-----------------------------------------
; ★ ブラウザ選択(最上段)
;-----------------------------------------
GUICtrlCreateLabel("ブラウザ", 5, 5, $labelW, 14)
GUICtrlSetFont(-1, 6)
$comboBrowser = GUICtrlCreateCombo("", 5 + $labelW, 3, $inputW, 18)
For $i = 0 To UBound($browserMap) - 1
GUICtrlSetData($comboBrowser, $browserMap[$i][0])
Next
GUICtrlSetData($comboBrowser, "Firefox")
GUICtrlSetFont($comboBrowser, 7)
;-----------------------------------------
; ★ 保存先
;-----------------------------------------
GUICtrlCreateLabel("保存先", 5, 30, $labelW, 14)
GUICtrlSetFont(-1, 6)
$inputFolder = GUICtrlCreateInput($saveFolder, 5 + $labelW, 28, $inputW, 18)
GUICtrlSetFont($inputFolder, 7)
;-----------------------------------------
; ★ バッチファイル(保存先の下)
;-----------------------------------------
GUICtrlCreateLabel("BAT", 5, 55, $labelW, 14)
GUICtrlSetFont(-1, 6)
$inputBatch = GUICtrlCreateInput($batchFile, 5 + $labelW, 53, $inputW, 18)
GUICtrlSetFont($inputBatch, 7)
;-----------------------------------------
; ★ 回数と間隔(横並び)
;-----------------------------------------
GUICtrlCreateLabel("回数", 5, 80, 25, 14)
GUICtrlSetFont(-1, 6)
$inputBurstCount = GUICtrlCreateInput($burstCount, 35, 78, 40, 18)
GUICtrlSetFont($inputBurstCount, 7)
GUICtrlCreateLabel("間隔", 80, 80, 25, 14)
GUICtrlSetFont(-1, 6)
$inputBurstInterval = GUICtrlCreateInput($burstInterval, 110, 78, 50, 18)
GUICtrlSetFont($inputBurstInterval, 7)
;-----------------------------------------
; ★ ボタン(大きめ・日本語・2×2)
;-----------------------------------------
Local $btnW = 75
Local $btnH = 30
; 1行目
$btnCapture = GUICtrlCreateButton("キャプチャ", 5, 110, $btnW, $btnH)
$btnBurst = GUICtrlCreateButton("連写", 5 + $btnW + 5, 110, $btnW, $btnH)
; 2行目
$btnBatch = GUICtrlCreateButton("実行", 5, 110 + $btnH + 5, $btnW, $btnH)
$btnExit = GUICtrlCreateButton("終了", 5 + $btnW + 5, 110 + $btnH + 5, $btnW, $btnH)
GUISetState()
WinSetOnTop("SS", "", 1)
;-----------------------------------------
; メインループ
;-----------------------------------------
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE, $btnExit
SaveSettings()
Exit
Case $btnCapture
GUICtrlSetState($btnCapture, $GUI_DISABLE)
GUICtrlSetState($btnBurst, $GUI_DISABLE)
CaptureSelectedBrowser()
GUICtrlSetState($btnCapture, $GUI_ENABLE)
GUICtrlSetState($btnBurst, $GUI_ENABLE)
Case $btnBurst
GUICtrlSetState($btnCapture, $GUI_DISABLE)
GUICtrlSetState($btnBurst, $GUI_DISABLE)
BurstCapture()
GUICtrlSetState($btnCapture, $GUI_ENABLE)
GUICtrlSetState($btnBurst, $GUI_ENABLE)
Case $btnBatch
RunBatchFile()
EndSwitch
Local $pos = WinGetPos("SS")
$posX = $pos[0]
$posY = $pos[1]
Sleep(50)
WEnd
;-----------------------------------------
; 関数
;-----------------------------------------
Func CaptureSelectedBrowser()
Local $selected = GUICtrlRead($comboBrowser)
For $i = 0 To UBound($browserMap) - 1
If $browserMap[$i][0] = $selected Then
CaptureBrowser($selected, $browserMap[$i][1])
Return
EndIf
Next
EndFunc
Func CaptureBrowser($name, $class)
Local $hWnd = WinGetHandle($class)
If $hWnd = 0 Then
TrayTip("ERR", $name & "なし", 1)
Return
EndIf
WinActivate($hWnd)
WinWaitActive($hWnd)
Local $timestamp = @YEAR & @MON & @MDAY & "_" & @HOUR & @MIN & @SEC
Local $filename = $saveFolder & "\" & $name & "_" & $timestamp & ".png"
DirCreate($saveFolder)
Local $hBmp = _ScreenCapture_CaptureWnd("", $hWnd)
_ScreenCapture_SaveImage($filename, $hBmp)
TrayTip("保存", $filename, 1)
EndFunc
Func BurstCapture()
Local $count = Number(GUICtrlRead($inputBurstCount))
Local $interval = Number(GUICtrlRead($inputBurstInterval))
For $i = 1 To $count
CaptureSelectedBrowser()
Sleep($interval)
Next
EndFunc
Func RunBatchFile()
Local $bat = GUICtrlRead($inputBatch)
If FileExists($bat) Then
Run('"' & $bat & '"', "", @SW_HIDE)
TrayTip("BAT", $bat, 1)
Else
MsgBox(16, "ERR", "見つからない:" & @CRLF & $bat)
EndIf
EndFunc
Func SaveSettings()
IniWrite($iniFile, "Settings", "SaveFolder", GUICtrlRead($inputFolder))
IniWrite($iniFile, "Settings", "BurstCount", GUICtrlRead($inputBurstCount))
IniWrite($iniFile, "Settings", "BurstInterval", GUICtrlRead($inputBurstInterval))
IniWrite($iniFile, "Settings", "BatchFile", GUICtrlRead($inputBatch))
IniWrite($iniFile, "Settings", "PosX", $posX)
IniWrite($iniFile, "Settings", "PosY", $posY)
EndFunc
バッチファイル
powershell -WindowStyle Hidden -Command "C:\app\autoit3\AutoIt3_x64.exe C:\app\autoit3\Examples\ScreenCapture.au3"








ディスカッション
コメント一覧
まだ、コメントがありません