TileWindows
Última actualización
Última actualización
[DllImport("user32.dll")]
static extern int TileWindows(IntPtr hwndParent, int wHow, IntPtr lpRect, int cKids, IntPtr lpKids);
[DllImport("user32.dll")]
static extern int TileWindows(IntPtr hwndParent, int wHow, IntPtr lpRect, int cKids, [MarshalAs(UnmanagedType.LPArray)]IntPtr[] lpKids);
Private Shared Function EnumWindows(
End Function
Private Shared Function TileWindows(ByVal hwndParent As System.IntPtr, ByVal wHow As UInteger, ByVal lpRect As RECT, ByVal cKids As UInteger, ByVal lpKids() As System.IntPtr) As UShort
End Function
Private Shared Function GetWindowText(hWnd As IntPtr, lpString As StringBuilder, nMaxCount As Integer) As Integer
End Function
Dim sb As New StringBuilder(1024)
GetWindowText(hwnd, sb, sb.Capacity)
Return sb.ToString
End Function
Private Sub TileClassMatch(className As String, inRect As RECT, _
partialMatch As Boolean)
Dim hwndLst As New List(Of IntPtr)
'Define the 'ad-hoc' routine as needed, e.g.:
Dim CB As New EnumWindowsProc(Function(hwnd As IntPtr, lParam As IntPtr)
Dim cln As String = GetWindowsTitle(hwnd)
If partialMatch Then
If className.ToLower.Contains(cln.ToLower) Then
hwndLst.Add(hwnd)
End If
Else
If className = cln Then hwndLst.Add(hwnd)
End If
Return True
End Function)
'Call it...
EnumWindows(CB, IntPtr.Zero)
If hwndLst.Count > 0 Then
Dim successCount As UShort = _
TileWindows(IntPtr.Zero, MDI_TILE.SKIPDISABLED, _
inRect, CUInt(hwndLst.Count), hwndLst.ToArray)
MessageBox.Show(String.Concat(successCount.ToString, " windows tiled in ", vbCrLf, _
"rectangle ", inRect.Left.ToString, ", ", inRect.Top.ToString, ", ", inRect.Right.ToString, _
", ", inRect.Bottom.ToString), "Tiling...", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End Sub