お尋ねします。
powershellで複数開いているウィンドウの中から任意のウインドウを選択するには
どうしたらいいのでしょうか。
またIEやfirefoxなどでタブまでの指定も可能でしょうか。
よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答3件
0
遊びで作ってみました。投稿容量を超えたのでアップローダーを使いました。三日で削除されます。
Activate-Window teratail
のように動かしてみてください。
該当ウィンドウが複数ある時にはその中から選択できます。
-Click オプションを付けると、アクティブにした後クリックしますので、タブブラウザのタブ選択などに使えるのではないかと思います。
ちなみに、Microsoft Edge ではクリックできましたが、Chrome はタブが個別のウィンドウではないらしく、できませんでした。
投稿2016/07/19 07:55
総合スコア28673
0
できないことはありません。
まず一つは、可視のウィンドウを列挙してそこに関連付けられたタイトルとウィンドウハンドルのペアのリストを返すスクリプト、もう一つはウィンドウハンドルで指定されたウィンドウを一番上に持ってきてアクティブ化するスクリプト、この二つを作ればいいわけです。タブにも対応できます。
ただ、これを作るとなると、PInvoke を複数使わなければならないし、ウィンドウを操作するクラスも作らなければなりません。結局、ほとんど C# のソースになってしまいます。そんなものを作るくらいだったら、最初から C# で作ればいいという話になります。
投稿2016/07/18 12:26
総合スコア28673
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ぱっと思いついた方法です。あまり綺麗な実装ではありませんので他にもっと最適解があればそちらをご利用ください。
PowerShell
1 2add-type -AssemblyName microsoft.VisualBasic 3add-type -AssemblyName System.Windows.Forms 4$isok = $false; 5while($isok -eq $false) { 6 # iexploreのプロセスを取得 7 $ps = Get-Process | Where-Object {$_.Name -eq "iexplore"} 8 foreach($process in $ps){ 9 # MainWindowTitleが空でないもの 10 if($process.MainWindowTitle -ne "") { 11 # プロセスをアクティブにする 12 [Microsoft.VisualBasic.Interaction]::AppActivate($process.ID); 13 # MainWindowTitleが期待しているものか確認 14 if($process.MainWindowTitle -match "PowerShell - powershellでウィンドウの選択*") { 15 # マッチしていればループを抜ける 16 $isok = $true; 17 } else { 18 # マッチしていなければCtrl+TABを送る 19 [System.Windows.Forms.SendKeys]::SendWait("^({TAB})"); 20 # 処理を待つ 21 Start-Sleep -m 200 22 } 23 } 24 } 25}
firefoxの場合は$ps = Get-Process | Where-Object {$_.Name -eq "firefox"}
で同じことができます。
投稿2016/07/05 06:24
総合スコア925
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/20 15:48
2016/07/21 03:02
2016/08/18 22:34