So che esiste GetSystemMetrics con SM_CXFULLSCREEN e SM_CYFULLSCREEN per
ottenere la risoluzione del tuo monitor e poi la SHAppBarMessage con
ABM_GETTASKBARPOS
Prova a guardare qui:
http://msdn.microsoft.com/en-us/library/ms724947.aspx
Oppure:
Dim coord As System.Drawing.Rectangle
coord = Screen.GetWorkingArea(coord)
in coord.bottom o .height hai l'altezza massima, quindi la dimensione dello
schermo
Imports System
Imports System.Runtime.InteropServices
Public Class Form1
<StructLayout(LayoutKind.Sequential)> _
Structure RECT
Public left As Integer
Public top As Integer
Public right As Integer
Public bottom As Integer
End Structure
<StructLayout(LayoutKind.Sequential)> _
Structure APPBARDATA
Public cbSize As Integer
Public hWnd As IntPtr
Public uCallbackMessage As Integer
Public uEdge As Integer
Public rc As RECT
Public lParam As IntPtr
End Structure
Enum ABMsg As Integer
ABM_NEW = 0
ABM_REMOVE = 1
ABM_QUERYPOS = 2
ABM_SETPOS = 3
ABM_GETSTATE = 4
ABM_GETTASKBARPOS = 5
ABM_ACTIVATE = 6
ABM_GETAUTOHIDEBAR = 7
ABM_SETAUTOHIDEBAR = 8
ABM_WINDOWPOSCHANGED = 9
ABM_SETSTATE = 10
End Enum
Enum ABEdge As Integer
ABE_LEFT = 0
ABE_TOP
ABE_RIGHT
ABE_BOTTOM
End Enum
Enum ABState As Integer
ABS_MANUAL = 0
ABS_AUTOHIDE = 1
ABS_ALWAYSONTOP = 2
ABS_AUTOHIDEANDONTOP = 3
End Enum
Private Enum TaskBarEdge As Integer
Bottom
Top
Left
Right
End Enum
Private Declare Function SHAppBarMessage Lib "SHELL32" (ByVal dwMessage
As Integer, ByRef pData As APPBARDATA) As UInteger
Private Sub GetTaskBarInfo(ByRef taskBarEdge As TaskBarEdge, ByRef
height As Integer, ByRef autoHide As Boolean)
Dim abd As APPBARDATA = New APPBARDATA
height = 0
taskBarEdge = TaskBarEdge.Bottom
autoHide = False
Dim ret As UInteger = SHAppBarMessage(CType(ABMsg.ABM_GETTASKBARPOS,
Integer), abd)
Select Case (abd.uEdge)
Case CType(ABEdge.ABE_BOTTOM, Integer)
taskBarEdge = TaskBarEdge.Bottom
height = (abd.rc.bottom - abd.rc.top)
Case CType(ABEdge.ABE_TOP, Integer)
taskBarEdge = TaskBarEdge.Top
height = abd.rc.bottom
Case CType(ABEdge.ABE_LEFT, Integer)
taskBarEdge = TaskBarEdge.Left
height = (abd.rc.right - abd.rc.left)
Case CType(ABEdge.ABE_RIGHT, Integer)
taskBarEdge = TaskBarEdge.Right
height = (abd.rc.right - abd.rc.left)
End Select
abd = New APPBARDATA
Dim uState As UInteger = SHAppBarMessage(CType(ABMsg.ABM_GETSTATE,
Integer), abd)
Select Case (uState)
Case CType(ABState.ABS_ALWAYSONTOP, Integer)
autoHide = False
Case CType(ABState.ABS_AUTOHIDE, Integer)
autoHide = True
Case CType(ABState.ABS_AUTOHIDEANDONTOP, Integer)
autoHide = True
Case CType(ABState.ABS_MANUAL, Integer)
autoHide = False
End Select
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim lato As TaskBarEdge
Dim altezza As Integer
Dim stato As Integer
GetTaskBarInfo(lato, altezza, stato)
Dim coord As System.Drawing.Rectangle
coord = Screen.GetWorkingArea(coord)
End Sub
End Class