2014年3月7日金曜日

◆IE画面をアクティブにして最大化

起動中のIEをアクティブにするにはタスクマバーから選択するのが一般的だろう。

通常、ひとつのEXEしか起動していないアプリでは単純にタスクバーをクリックすればよい。

複数のEXEやIEのように複数のタブを開いているアプリケーションはカーソルを持っていくと表示されるサムネイルをクリックすることになる。

一見すばらしい機能なのだが、IEで多くのタブを開いているとサムネイル表示にもたつくこともある。

また、一般的には直近に使っていたタブを使うことが多いと思われる事からサムネイルを省略してとりあえず復帰してよ、っと思うことも多い。

たとえばタスクバーの1番目にIEを表示しているとすると、「Win + 1」で復帰すること自体は可能だ。
しかし、この機能はなぜか必ず先頭のタブを表示してしまう。(><)

単純にもとの状態に復帰するのがなかなか難しい。

「Alt + Tab」や「Win + Tab」なんかは大げさすぎるし、況やフリーソフトのタスクスイッチャーをやである。

どうしてもIEの頻度が最多なので、ダイレクトにIEに戻りたいのだ。

しかたが無いので、PowerShellでちょっと作ってみた。

アクティブにするだけならVBのライブラリーを使ってすぐできるのだが、最大化とかになるといまだにAPIの出番っぽい。

APIについては関数化されている方がいらっしゃるので、そのまま使わせて頂いた。
PowerShellからWin32APIを呼ぶ - 潜在推力
(New-PMethod関数とNew-PType関数)

001
002
003
004
005
006
007
008
009
010
011
012

# -----------------------------------------------------------------------
$showWindow          =
 
 
New-PMethod "user32.dll" ([Bool]) "ShowWindow"          @([IntPtr], [Int32])
$setForegroundWindow =
 
 
New-PMethod "user32.dll" ([Bool]) "SetForegroundWindow" @([IntPtr])
# -----------------------------------------------------------------------

$ps = ,(ps iexplore)

$psMain = $ps[0] | ?{$_.MainWindowTitle} 
$showWindow.Invoke($psMain.MainWindowHandle, 3)
$setForegroundWindow.Invoke($psMain.MainWindowHandle)

IEはひとつのWindowで複数のプロセスが動いているのでどれを使えば良いのか良くはわからないのだが、とりあえずMainWindowTitleがあるものを使ってみた。

複数のIEを立ち上げているときはうまい具合に直近に使っていたほうが表示されるようだ。

とりあえず今のところうまく動いているが、非力なマシンでは常駐化とかを考えないと使用に耐えないだろう。(PC起動時もバックグラウンドでごちゃごちゃ動いているので落ち着くまでは遅い)

私はこれにショートカットを割り当て、多機能マウスのボタンに割り当てて使っている。

なんにしても本来PowerShellねたでは無いと思うので具合が良いようであれば別途移植を考えたい。

0 件のコメント:

コメントを投稿