Windows PowerShellを使って、Google Chromeブラウザのタイトル名を取得する方法です。
下記は、1行で書くコード例です。
Get-Process -Name "chrome"|where {$_.MainWindowTitle -ne "" } |Format-Table -Property MainWindowTitle
Get-Processを使ってMainWindowTitleを取り出しています。
3分間whileループして、 Chromeブラウザのタイトル名に変化があれば表示する例です。
$endTime = (Get-Date).AddMinutes(3) #3分後に処理を終了する $ima = Get-Date #今の時間 $titleStr = "" while ($endTime -gt $ima){ #1分間だけループ $processList = Get-Process -Name "chrome" #chromeプロセスを取得 if ($processList){ foreach($p in $processList){ if ($p.MainWindowTitle -ne "") { #Windowタイトル名があるものだけ採用 if ($titleStr -ne $p.MainWindowTitle){ #Windowタイトルに変化があった場合 Write-Host $p.MainWindowTitle #タイトル名を表示する $titleStr = $p.MainWindowTitle } } } } Start-Sleep -Seconds 1 $ima = Get-Date }
アクティブなウィンドウのタイトル名を取得
Win32APIのGetForegroundWindow()を使えば アクティブウィンドウのハンドルが取得できます。
そのウィンドウハンドルを使って、Get-Processで取得したハンドルと比較しアクティブなウィンドウと判断するコード例です。
$code = @' [DllImport("user32.dll")] public static extern IntPtr GetForegroundWindow(); '@ Add-Type $code -Name user32 -Namespace Win32API #user32.dllのGetForegroundWindow()を定義 $endTime = (Get-Date).AddMinutes(1) #1分後に処理を終了する $ima = Get-Date #今の時間 $titleStr = "" while ($endTime -gt $ima){ #1分間だけループ $hwnd = [Win32API.user32]::GetForegroundWindow() #アクティブなウィンドウのウィンドウハンドルを取得 $processList = Get-Process #-Name "chrome" foreach($p in $processList){ if ($hwnd -eq $p.MainWindowHandle){ #アクティブウィンドウと同じハンドルがあるかどうか if ($p.MainWindowTitle -ne "") { #Windowタイトル名があるものだけ採用 if ($titleStr -ne $p.MainWindowTitle){ #Windowタイトルに変化があった場合 Write-Host $p.MainWindowTitle #タイトル名を表示する $titleStr = $p.MainWindowTitle } } } } Start-Sleep -Seconds 1 $ima = Get-Date }