10.15 Wie kann ich die Größe des verfügbaren Arbeitsbereichs ermitteln?
Von: Thorsten Dörfler
Über das Screen-Objekt und seinen Height- und Width-Eigeschaften, bekommen Sie die Größe des gesamten Desktops. Durch diverse Leisten, wie der Taskleiste oder benutzerdefinierten Symbolleisten, kann dieser Bereich jedoch eingeschränkt sein. Diesen eingeschränkten Bereich können Sie über die API Funktion SystemParametersInfo in Erfahrung bringen:
Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Private Const SPI_GETWORKAREA As Long = 48 Private Declare Function SystemParametersInfo Lib "user32" _ Alias "SystemParametersInfoA" ( _ ByVal uAction As Long, _ ByVal uParam As Long, _ ByRef lpvParam As Any, _ ByVal fuWinIni As Long _ ) As Long Public Sub WorkArea(Optional ByRef Left As Single, _ Optional ByRef Top As Single, _ Optional ByRef Width As Single, _ Optional ByRef Height As Single, _ Optional ByVal UseTwips As Boolean) Dim lRC As RECT SystemParametersInfo SPI_GETWORKAREA, 0, lRC, 0 If UseTwips Then Left = CSng(lRC.Left) * Screen.TwipsPerPixelX Top = CSng(lRC.Top) * Screen.TwipsPerPixelY Width = CSng(lRC.Right - lRC.Left) * Screen.TwipsPerPixelX Height = CSng(lRC.Bottom - lRC.Top) * Screen.TwipsPerPixelY Else Left = CSng(lRC.Left) Top = CSng(lRC.Top) Width = CSng(lRC.Right - lRC.Left) Height = CSng(lRC.Bottom - lRC.Top) End If End Sub
Angewendet:
Private Sub Command1_Click() Dim lLeft As Single Dim lTop As Single Dim lWidth As Single Dim lHeight As Single WorkArea lLeft, lTop, lWidth, lHeight, False Debug.Print "Left:"; lLeft, "Top:"; lTop, _ "Width:"; lWidth, "Height:"; lHeight End Sub