Alt+Tabをした時に表示されるウインドウの順番
最近は、朝の寒さで目が覚める。(苦笑)
いい天気だ。
少し前に、Alt+Tabをした時に、自分の作ったプログラムを反応させるやり方について書いた。
どれだけ需要があるのかわからないけれど、それに関連することを書いてみよう。
Alt+Tabをした時に表示されるウインドウの順番、これ、Z Orderで取得出来るとのこと。
この時のZ Orderというのは、Windows OSが管理している、ウインドウ(プログラム)の重なりの順番のこと。
最近見ていたもの(扱ったもの)は、Z Orderの番号が小さい、つまり、重なりで言えば、上の方にある。
これ、プログラムでどうやって取るのかな?と思って検索してみるとあった。
c# - Retrieve order of open windows as ordered in the Alt-Tab list? - Stack Overflow
この関数を使えば、ものすごく簡単にZ Orderの値を取得することが出来る。
上記は、C#の例なので、VB.NETで書いておこう。
<DllImport("user32.dll", SetLastError:=True)>
Private Shared Function GetWindow(ByVal hWnd As IntPtr, ByVal nIndex As Integer) As IntPtr
End Function
Public Shared Function GetZOrder(ByVal p As Process) As Integer
Dim hWnd As IntPtr = p.MainWindowHandle
Dim z = 0
Dim h = hWnd
While h <> IntPtr.Zero
z += 1
h = GetWindow(h, 3)
End While
Return z
End Function
「GetZOrder」関数に、プロセスを渡してあげると、そのプロセスが何番目に出現するかを見て、それをZ Orderの値として戻している。
呼び出し元は、
For Each p As Process In Process.GetProcesses
Try
If p.MainWindowTitle = Nothing Then
Else
Dim zorder = GetZOrder(p)
'以下、必要な処理
End If
Catch ex As Exception
End Try
Next
こんな感じ。適当に書いているけれど。
アドミン権限のないユーザで実行すると、システムプロセスを取得しようとしてエラーになるので、Try Catchを入れておくと無難。
上記は、ウインドウにタイトルのあるものだけを取得している。
あとは、自分の思うように処理すればいい。
これで、自分の作ったプログラムでも、Alt+Tabと同じような順番に表示(処理)させることが出来るようになった。
| 固定リンク
「パソコン・インターネット」カテゴリの記事
- 最近の迷惑メール(2026.05.16)
- 23H2のままでも、しばらくは大丈夫かもしれない(2026.04.15)
- Stop after focused track(2026.04.04)
- AIのお陰(2026.03.19)
- 減ったまま(2026.03.18)


コメント