Powershellで「Microsoft Edgeを最前面に出してリロード」させるスクリプトを作りました。
ソース
add-type -AssemblyName microsoft.VisualBasic
add-type -AssemblyName System.Windows.Forms
$isok = $false;
$i = 0; #無限ループ脱出用
$matchflg = $false; #目的のウィンドウが見つかった時に倒すフラグ
$MaxLoop = 30; #ループする最大回数
while($isok -eq $false) {
# msedgeのプロセスを取得
$ps = Get-Process | Where-Object {$_.Name -eq "msedge"}
foreach($process in $ps){
# MainWindowTitleが空でないもの
if($process.MainWindowTitle -ne "") {
# プロセスをアクティブにする
[Microsoft.VisualBasic.Interaction]::AppActivate($process.ID);
# MainWindowTitleが期待しているものか確認
if($process.MainWindowTitle -match "あいうえお - Wikipedia") {
# マッチしていればループを抜ける
$matchflg = $true;
$isok = $true;
} else {
# マッチしていなければShift+Alt+TABを送る
[System.Windows.Forms.SendKeys]::SendWait("+(%({TAB}))");
$i = $i + 1;
# 処理を待つ
Start-Sleep -m 200
#目的のウィンドウが無さそうならループを抜ける(無限ループ回避)
if($i -gt $MaxLoop){
$isok = $true;
}
}
}
}
}
if($matchflg -eq $true){
[System.Windows.Forms.SendKeys]::SendWait("{f5}");
}
「”任意のファイル名”.ps1」を新規作成し、上記コードをコピペして実行すればとりあえずは動くと思います。
動かなかったら端末環境の違いかも。
やっていることとしては、
①目的のタイトルのMicrosoftEdgeのウィンドウが見つかるまで[Shift+Alt+Tab]キーを送る、②[F5]キーを送ってブラウザをリロード
といった感じ。
複数のMicrosoftEdgeウィンドウが立ち上がっている場合を想定しています。
以下の値は任意で変更して使用します。
$MaxLoop = 30; #ループする最大回数
無限ループ回避用の変数です。開いているウィンドウの総数以上の値を指定します。
$ps = Get-Process | Where-Object {$_.Name -eq "msedge"}
リロードしたいウィンドウはEdgeなので、ここで”msedge”を指定しています。(リロードしたいウィンドウがIEの場合は”iexplorer”と記述します。)
蛇足かもしれませんが、[Windows+R]キーを押して「ファイル名を指定して実行」から”msedge”と入力すると、Edgeで新規ウィンドウが立ち上がります。
if($process.MainWindowTitle -match "あいうえお - Wikipedia")
目的のウィンドウのタイトルを指定します。
Edgeの場合は、[F12]キーで開発者ツールを開いて、<title>属性からコピーできます。