少し改良したので再掲
##########################################################################################
# 注意事項
# ・ドライブ直下のフォルダ(例えばc:\tmpなど)は権限が無いため、
# 本スクリプトでは作成できないことがあります。事前に作成して下さい。
# ・実行ポリシーが変更されていない場合、(Set-ExecutionPolicy RemoteSigned等)が必要です。
##########################################################################################
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
# 出力先ファイルパス
$filePath = "c:\tmp\evi\C{0:000}.png"
#$filePath = "c:\tmp\evi\" + $(Get-Date).ToString("yyyyMMdd") + "\C{0:000}.png"
# Jpeg,Gif,Bmp,Pngから選択する。
$fileKind = [System.Drawing.Imaging.ImageFormat]::Png
# スクリーンキャプチャして、Graphicsオブジェクトを生成
$rect = [System.windows.forms.Screen]::PrimaryScreen.Bounds
$bitmap = New-Object System.Drawing.Bitmap($rect.Width, $rect.Height)
$graphics = [System.Drawing.Graphics]::FromImage($bitmap)
$zero = New-Object System.Drawing.Point(0, 0)
$graphics.CopyFromScreen($zero, $zero, $bitmap.Size)
# フォルダ作成、フォルダがすでに存在するエラーは非表示。他のエラーも黙らせるので注意。
$dirPath = Split-Path $filePath -parent
New-Item -path $dirPath -type directory -ErrorAction SilentlyContinue
# ファイル名を決定。順に、以下の処理を行う。
# 1000までの数字を生成、ファイル名をフォーマットに従い決定、ファイルが存在するかチェック、最初の1件を取得、変数に格納を行う。
1..1000 | % { $filePath -f $_ } | Where { (Test-Path $_) -eq $false } | select -First 1 | sv resultFile
# ファイル保存
$bitmap.Save($resultFile, $fileKind)
##########################################################################################
# ファイル作成後処理。フォルダやファイルを開く。必要に応じて、コメントアウトする。
##########################################################################################
$shell = New-Object -ComObject Shell.Application # explorer ieの一覧を取得
#============================================================================
# 拡張子に対する既定のアプリケーションで開く。
#============================================================================
#ii $resultFile
#============================================================================
# ペイントで開く。
#============================================================================
#mspaint $resultFile
#============================================================================
# IEで開く。(毎回新しいウィンドウで開く。)
#============================================================================
#$ieCom = New-Object -ComObject InternetExplorer.Application # IEで開く。
#$ieCom.Navigate($resultFile)
#$ieCom.Visible = $true
#============================================================================
# IEで開く。初回のみIEを1つ開き、2回目以降はウィンドウを更新する。
#============================================================================
# 対象のウィンドウのみ取得。
$ie = $null
$locationURL = "file:///" + $dirPath.Replace("\", "/")
$shell.windows() | where {($_.LocationURL -like $locationURL + "*") -and ($_.Name -eq "Internet Explorer")} | select -First 1 | sv ie
# オープン済みのIEが取得できなかった場合は、IEを開く。
if ($ie -eq $null)
{
$ie = New-Object -ComObject InternetExplorer.Application
$ie.Width = 700
$ie.Height = 300
$ie.Left = 1000
$ie.top = 300
$ie.AddressBar = $false
}
# IEで作成したファイルを開く。
$ie.Navigate($resultFile)
$ie.Visible = $true
#============================================================================
# エクスプローラを開く。
#============================================================================
$exp = $null
$locationURL = "file:///" + $dirPath.Replace("\", "/")
$shell.windows() | where {($_.LocationURL -like $locationURL) -and ($_.Name -eq "エクスプローラー")} | select -First 1 | sv exp
if ($exp -eq $null)
{
Start "explorer " -Args $dirPath -Wait
$shell.windows() | where {($_.LocationURL -like $locationURL) -and ($_.Name -eq "エクスプローラー")} | select -First 1 | sv exp
$exp.Width = 700
$exp.Height = 300
$exp.Left = 1000
$exp.top = 0
$exp.AddressBar = $false
$exp.Document.SortColumns = "prop:System.DateModified;"
$exp.Document.CurrentViewMode = 5
$exp.Document.IconSize = 150
}
$exp.Refresh2()
0 件のコメント:
コメントを投稿