C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■96055 / )  Re[1]: ウインドウの表示順番の取得
□投稿者/ KOZ (138回)-(2020/10/19(Mon) 10:06:46)
No96047 (雀 さん) に返信
> ウインドウの位置に関してはどの変数を使えば良いか分かるのですが
> 表示順番に関してどのパラメータを使えば良いでしょうか?

こんな感じで並びを調べるしか方法がなさそうです。

Imports System.Runtime.InteropServices

<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function GetWindow(ByVal hWnd As IntPtr, ByVal uCmd As GetWindowType) As IntPtr
End Function

Private Enum GetWindowType As UInteger
    GW_HWNDFIRST = 0
    GW_HWNDLAST = 1
    GW_HWNDNEXT = 2
    GW_HWNDPREV = 3
    GW_OWNER = 4
    GW_CHILD = 5
    GW_ENABLEDPOPUP = 6
End Enum

Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ToolStripButton1.Click
    If Me.MdiChildren.Count > 0 Then
        Debug.Print("--START--")
        Dim childHwnd As IntPtr = GetWindow(Me.MdiChildren(0).Handle, GetWindowType.GW_HWNDFIRST)
        While childHwnd <> IntPtr.Zero
            Dim f As Form = Control.FromHandle(childHwnd)
            Debug.Print(f.Text)
            childHwnd = GetWindow(childHwnd, GetWindowType.GW_HWNDNEXT)
        End While
    End If
End Sub

返信 編集キー/


管理者用

- Child Tree -