|
begin process at 2008 07 06 18:41:25
Derniers logiciels
|
Trouver une ressource (Nouvelle version du moteur, plus rapide & pertinent, essayez le !)
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
SAVOIR SI UNE FENETRE EST VISIBLE DANS LA BARRE DE TACHE ( .NET )
Information sur la source
Description
cette classe ( inachevée ) contient des routines pour tester si une fenetre est listée dans la taskbar ( et le alt-tab ) et pour recupérer l'icone associée a cette fenetre ( pour coder une fausse taskbar ! ) LA CLASSE EST INACHEVEE ( pas de try catch, code imparfait ) c'est un départ pour ceux qui ont comme moi lutté pour trouver les critères ( styles ) qui ne sont pas complètement ce que la msdn nous dit ! Afin de vous éviter de chercher pendant des heures une logique dans spy++ , je publie cette source, ne ralez pas si le code est crade, c'est à vous de mettre en forme, c'est une matière première !
Source
- #Region "Copyright"
- '************************************************************************
- '* Auteur * Proviste / Coq *
- '* Date Création * 07/12/04 *
- '* Derniere Modification * 25/12/04 *
- '************************************************************************
- '* * *
- '* Module * clsHwndInfos *
- '* * *
- '* Description * Operation et information sur les hwnd *
- '* * *
- '* * *
- '************************************************************************
- #End Region
-
- #Region "Imports"
- '-_-'
- Imports System.Runtime.InteropServices
- #End Region
-
- Public Class clsHwndInfo
- #Region " Declaration"
-
- #Region " Enum Window Style :o"
- Private Enum enWindowStyles
- WS_BORDER = &H800000
- WS_CAPTION = &HC00000
- WS_CHILD = &H40000000
- WS_CLIPCHILDREN = &H2000000
- WS_CLIPSIBLINGS = &H4000000
- WS_DISABLED = &H8000000
- WS_DLGFRAME = &H400000
- WS_EX_ACCEPTFILES = &H10&
- WS_EX_DLGMODALFRAME = &H1&
- WS_EX_NOPARENTNOTIFY = &H4&
- WS_EX_TOPMOST = &H8&
- WS_EX_TRANSPARENT = &H20&
- WS_EX_TOOLWINDOW = &H80&
- WS_GROUP = &H20000
- WS_HSCROLL = &H100000
- WS_MAXIMIZE = &H1000000
- WS_MAXIMIZEBOX = &H10000
- WS_MINIMIZE = &H20000000
- WS_MINIMIZEBOX = &H20000
- WS_OVERLAPPED = &H0&
- WS_POPUP = &H80000000
- WS_SYSMENU = &H80000
- WS_TABSTOP = &H10000
- WS_THICKFRAME = &H40000
- WS_VISIBLE = &H10000000
- WS_VSCROLL = &H200000
- '\\ New from 95/NT4 onwards
- WS_EX_MDICHILD = &H40
- WS_EX_WINDOWEDGE = &H100
- WS_EX_CLIENTEDGE = &H200
- WS_EX_CONTEXTHELP = &H400
- WS_EX_RIGHT = &H1000
- WS_EX_LEFT = &H0
- WS_EX_RTLREADING = &H2000
- WS_EX_LTRREADING = &H0
- WS_EX_LEFTSCROLLBAR = &H4000
- WS_EX_RIGHTSCROLLBAR = &H0
- WS_EX_CONTROLPARENT = &H10000
- WS_EX_STATICEDGE = &H20000
- WS_EX_APPWINDOW = &H40000
- WS_EX_OVERLAPPEDWINDOW = (WS_EX_WINDOWEDGE Or WS_EX_CLIENTEDGE)
- WS_EX_PALETTEWINDOW = (WS_EX_WINDOWEDGE Or _
- WS_EX_TOOLWINDOW Or WS_EX_TOPMOST)
- End Enum
- #End Region
-
- #Region " GetWindowLong Diverses Declaration"
-
- <DllImport("user32.dll", CharSet:=CharSet.Ansi, EntryPoint:="GetWindowLong")> _
- Private Shared Function GetWindowLong32(ByVal hWnd As IntPtr, ByVal nIndex As Integer) As Integer
- End Function
-
- <DllImport("user32.dll", CharSet:=CharSet.Ansi, EntryPoint:="GetWindowLong")> _
- Private Shared Function GetWindowLongPtr(ByVal hWnd As IntPtr, ByVal nIndex As Integer) As IntPtr
- End Function
-
- <DllImport("user32.dll", CharSet:=CharSet.Ansi, EntryPoint:="GetWindowLong")> _
- Private Shared Function GetWindowLong64(ByVal hWnd As IntPtr, ByVal nIndex As Integer) As Long
- End Function
-
- #End Region
-
- #Region " GetClassLong Diverses Declaration"
-
- <DllImport("user32.dll", CharSet:=CharSet.Ansi, EntryPoint:="GetClassLong", SetLastError:=True)> _
- Private Shared Function GetClassLong32(ByVal hWnd As IntPtr, ByVal nIndex As Integer) As Integer
- End Function
-
- <DllImport("user32.dll", CharSet:=CharSet.Ansi, EntryPoint:="GetClassLong", SetLastError:=True)> _
- Private Shared Function GetClassLongPtr(ByVal hWnd As IntPtr, ByVal nIndex As Integer) As IntPtr
- End Function
-
- <DllImport("user32.dll", CharSet:=CharSet.Ansi, EntryPoint:="GetClassLong", SetLastError:=True)> _
- Private Shared Function GetClassLong64(ByVal hWnd As IntPtr, ByVal nIndex As Integer) As Long
- End Function
-
- #End Region
-
-
- <DllImport("user32.dll", CharSet:=CharSet.Ansi, EntryPoint:="SendMessage")> _
- Private Shared Function SendMessagePtr(ByVal hwnd As IntPtr, _
- ByVal wMsg As Int32, _
- ByVal wParam As Integer, _
- ByVal lParam As Integer) As IntPtr
- End Function
-
- '-sendmessage
- Private Declare Function SendMessage _
- Lib "user32" _
- Alias "SendMessageA" _
- (ByVal hwnd As IntPtr, _
- ByVal wMsg As Int32, _
- ByVal wParam As Integer, _
- ByVal lParam As System.Text.StringBuilder) As Integer
-
- Private Declare Function SendMessage _
- Lib "user32" _
- Alias "SendMessageA" _
- (ByVal hwnd As IntPtr, _
- ByVal wMsg As Int32, _
- ByVal wParam As Integer, _
- ByVal lParam As Integer) As Integer
-
- Private Const WM_SETTEXT = &HC
- Private Const WM_GETTEXT = &HD
- Private Const WM_GETTEXTLENGTH = &HE
- Private Const WM_SETICON = &H80
- Private Const WM_GETICON = &H7F
- Private Const ICON_SMALL = 0
- Private Const ICON_BIG = 1
- Private Const Icon_BIG_XP = 2
-
- Private Enum enGetWindowLong
- GWL_EXSTYLE = (-20)
- GWL_HINSTANCE = (-6)
- GWL_HWNDPARENT = (-8)
- GWL_ID = (-12)
- GWL_STYLE = (-16)
- GWL_USERDATA = (-21)
- GWL_WNDPROC = (-4)
- End Enum
-
- Private Enum enGetWindowLongPtr
- GCLP_MENUNAME = (-8)
- GCLP_HBRBACKGROUND = (-10)
- GCLP_HCURSOR = (-12)
- GCLP_HICON = (-14)
- GCLP_HMODULE = (-16)
- GCLP_WNDPROC = (-24)
- GCLP_HICONSM = (-34)
- End Enum
-
- Private Const GCL_CBCLSEXTRA = -20
- Private Const GCL_CBWNDEXTRA = -18
- Private Const GCL_HCURSOR = -12
- Private Const GCL_HICON = -14
- Private Const GCL_HMODULE = -16
- Private Const GCL_MENUNAME = -8
- Private Const GCL_STYLE = -26
- Private Const GCL_WNDPROC = -24
- Private Const GCL_HICONSM = -34
-
- Private myHwndPtr As IntPtr
-
- #End Region
-
- #Region " Procédures"
- #Region " Publiques"
-
- ''' -----------------------------------------------------------------------------
- ''' <summary>
- ''' Crée une nouvelle instance de la classe.
- ''' </summary>
- ''' <param name="hwndptr">Hwndptr qui sera traité</param>
- ''' <remarks>
- ''' </remarks>
- ''' <history>
- ''' Proviste 28/12/2004 Created
- ''' </history>
- ''' -----------------------------------------------------------------------------
- Public Sub New(ByVal hwndptr As IntPtr)
- NewInst(hwndptr)
- End Sub
-
- ''' -----------------------------------------------------------------------------
- ''' <summary>
- ''' Crée une nouvelle instance de la classe
- ''' </summary>
- ''' <param name="hwnd"></param>
- ''' <remarks>
- ''' </remarks>
- ''' <history>
- ''' Proviste 28/12/2004 Created
- ''' </history>
- ''' -----------------------------------------------------------------------------
- Public Sub New(ByVal hwnd As Long)
- NewInst(New IntPtr(hwnd))
- End Sub
-
-
- #End Region
-
- #Region " Privées"
-
-
-
- Private Sub NewInst(ByVal hwndptr As IntPtr)
- myHwndPtr = hwndptr
- End Sub
-
- #End Region
-
- #End Region
-
- #Region " Property"
- ''' -----------------------------------------------------------------------------
- ''' <summary>
- ''' Cette propriété renvoie ou définie le texte associé à un hwnd.
- ''' </summary>
- ''' <value>Valeur de type string</value>
- ''' <remarks>
- ''' </remarks>
- ''' <history>
- ''' Proviste 28/12/2004 Created
- ''' </history>
- ''' -----------------------------------------------------------------------------
- Public Property WindowText() As String
- Get
- Dim wdsTxtBuilt As System.Text.StringBuilder
- Dim wdsTxtLength As Integer
-
- wdsTxtLength = SendMessage(myHwndPtr, WM_GETTEXTLENGTH, 0, 0) + 1
-
- wdsTxtBuilt = New System.text.StringBuilder(Chr(0), wdsTxtLength)
-
- SendMessage(myHwndPtr, WM_GETTEXT, wdsTxtLength, wdsTxtBuilt)
-
- Return wdsTxtBuilt.ToString
- End Get
- Set(ByVal Value As String)
- SendMessage(myHwndPtr, WM_SETTEXT, Value.Length, New System.Text.StringBuilder(Value))
- End Set
-
- End Property
-
- ''' -----------------------------------------------------------------------------
- ''' <summary>
- ''' Retourne une valeur booléene pour savoir si l'objet associée au hwnd ( à priori une feuille ) est affichée dans la barre des tâche.
- ''' </summary>
- ''' <value>True : la form associée au hwnd passé en paramètre est affichée dans la barre des tâches</value>
- ''' <remarks>
- ''' </remarks>
- ''' <history>
- ''' Proviste 01/12/2005 Created
- ''' </history>
- ''' -----------------------------------------------------------------------------
- Public ReadOnly Property ShownInTaskBar() As Boolean
- Get
-
- If myHwndPtr.Size = 8 Then 'win64
- Dim wStyles As Long
- wStyles = GetWindowLong64(myHwndPtr, enGetWindowLong.GWL_STYLE)
- If (wStyles And enWindowStyles.WS_VISIBLE) = enWindowStyles.WS_VISIBLE Then
- Dim wStylesEx As Long
- wStylesEx = GetWindowLong32(myHwndPtr, enGetWindowLong.GWL_EXSTYLE)
- If (wStylesEx And enWindowStyles.WS_EX_TOOLWINDOW) = enWindowStyles.WS_EX_TOOLWINDOW Then
- Return False
- Else
- Return ((wStyles And enWindowStyles.WS_EX_APPWINDOW) = enWindowStyles.WS_EX_APPWINDOW) OrElse _
- ((wStyles And enWindowStyles.WS_POPUP) = enWindowStyles.WS_POPUP)
- End If
- Else
- Return False
- End If
- Else
- Dim wStyles As Integer
- wStyles = GetWindowLong32(myHwndPtr, enGetWindowLong.GWL_STYLE)
- If (wStyles And enWindowStyles.WS_VISIBLE) = enWindowStyles.WS_VISIBLE Then
- Dim wStylesEx As Integer
- wStylesEx = GetWindowLong32(myHwndPtr, enGetWindowLong.GWL_EXSTYLE)
- If (wStylesEx And enWindowStyles.WS_EX_TOOLWINDOW) = enWindowStyles.WS_EX_TOOLWINDOW Then
- Return False
- Else
- Return ((wStyles And enWindowStyles.WS_EX_APPWINDOW) = enWindowStyles.WS_EX_APPWINDOW) OrElse _
- ((wStyles And enWindowStyles.WS_POPUP) = enWindowStyles.WS_POPUP)
- End If
- Else
- Return False
- End If
- End If
- End Get
- End Property
-
- ''' -----------------------------------------------------------------------------
- ''' <summary>
- ''' Retourne une valeur booléene pour savoir si l'objet associé au hwnd est visible ( indépendement du fait qu'il soit caché ou non )
- ''' </summary>
- ''' <value>Renvoie True si l'objet est visible</value>
- ''' <remarks>
- ''' </remarks>
- ''' <history>
- ''' Proviste 01/12/2005 Created
- ''' </history>
- ''' -----------------------------------------------------------------------------
- Public ReadOnly Property Visible() As Boolean
- Get
- If myHwndPtr.Size = 8 Then 'win64
- Return ((GetWindowLong64(myHwndPtr, enGetWindowLong.GWL_EXSTYLE) And enWindowStyles.WS_VISIBLE) = enWindowStyles.WS_VISIBLE)
- Else
- Return ((GetWindowLong32(myHwndPtr, enGetWindowLong.GWL_EXSTYLE) And enWindowStyles.WS_VISIBLE) = enWindowStyles.WS_VISIBLE)
- End If
- End Get
- End Property
-
- ''' -----------------------------------------------------------------------------
- ''' <summary>
- ''' Renvoie ou définie le handle de l'icone associé à la fenetre
- ''' </summary>
- ''' <value></value>
- ''' <remarks>
- ''' </remarks>
- ''' <history>
- ''' Proviste 01/12/2005 Created
- ''' </history>
- ''' -----------------------------------------------------------------------------
- Public ReadOnly Property hIcon() As IntPtr
- Get
- Dim hIcn As IntPtr
-
- hIcn = SendMessagePtr(myHwndPtr, WM_GETICON, ICON_BIG, 0)
- If hIcn.ToString = "0" Then
- Return GetClassLongPtr(myHwndPtr, GCL_HICON)
- Else
- Return hIcn
- End If
-
- End Get
- ' Set(ByVal Value As IntPtr)
- ' 'MsgBox(SetClassLong(myHwndPtr, GCL_HICON, Value))
- ' End Set
- End Property
-
- ''' -----------------------------------------------------------------------------
- ''' <summary>
- ''' Renvoie ou définie le handle de l'icone 16*16 associé à la fenetre
- ''' </summary>
- ''' <value></value>
- ''' <remarks>
- ''' </remarks>
- ''' <history>
- ''' Proviste 01/12/2005 Created
- ''' </history>
- ''' -----------------------------------------------------------------------------
- Public ReadOnly Property hIconSmall() As IntPtr
- Get
- Dim hIcn As IntPtr
-
- hIcn = SendMessagePtr(myHwndPtr, WM_GETICON, ICON_SMALL, 0)
- If hIcn.Equals(IntPtr.Zero) Then
- Return GetClassLongPtr(myHwndPtr, GCL_HICONSM)
- Else
- Return hIcn
- End If
-
- End Get
- ' Set(ByVal Value As IntPtr)
- '
- ' End Set
- End Property
- #End Region
- End Class
#Region "Copyright"
'************************************************************************
'* Auteur * Proviste / Coq *
'* Date Création * 07/12/04 *
'* Derniere Modification * 25/12/04 *
'************************************************************************
'* * *
'* Module * clsHwndInfos *
'* * *
'* Description * Operation et information sur les hwnd *
'* * *
'* * *
'************************************************************************
#End Region
#Region "Imports"
'-_-'
Imports System.Runtime.InteropServices
#End Region
Public Class clsHwndInfo
#Region " Declaration"
#Region " Enum Window Style :o"
Private Enum enWindowStyles
WS_BORDER = &H800000
WS_CAPTION = &HC00000
WS_CHILD = &H40000000
WS_CLIPCHILDREN = &H2000000
WS_CLIPSIBLINGS = &H4000000
WS_DISABLED = &H8000000
WS_DLGFRAME = &H400000
WS_EX_ACCEPTFILES = &H10&
WS_EX_DLGMODALFRAME = &H1&
WS_EX_NOPARENTNOTIFY = &H4&
WS_EX_TOPMOST = &H8&
WS_EX_TRANSPARENT = &H20&
WS_EX_TOOLWINDOW = &H80&
WS_GROUP = &H20000
WS_HSCROLL = &H100000
WS_MAXIMIZE = &H1000000
WS_MAXIMIZEBOX = &H10000
WS_MINIMIZE = &H20000000
WS_MINIMIZEBOX = &H20000
WS_OVERLAPPED = &H0&
WS_POPUP = &H80000000
WS_SYSMENU = &H80000
WS_TABSTOP = &H10000
WS_THICKFRAME = &H40000
WS_VISIBLE = &H10000000
WS_VSCROLL = &H200000
'\\ New from 95/NT4 onwards
WS_EX_MDICHILD = &H40
WS_EX_WINDOWEDGE = &H100
WS_EX_CLIENTEDGE = &H200
WS_EX_CONTEXTHELP = &H400
WS_EX_RIGHT = &H1000
WS_EX_LEFT = &H0
WS_EX_RTLREADING = &H2000
WS_EX_LTRREADING = &H0
WS_EX_LEFTSCROLLBAR = &H4000
WS_EX_RIGHTSCROLLBAR = &H0
WS_EX_CONTROLPARENT = &H10000
WS_EX_STATICEDGE = &H20000
WS_EX_APPWINDOW = &H40000
WS_EX_OVERLAPPEDWINDOW = (WS_EX_WINDOWEDGE Or WS_EX_CLIENTEDGE)
WS_EX_PALETTEWINDOW = (WS_EX_WINDOWEDGE Or _
WS_EX_TOOLWINDOW Or WS_EX_TOPMOST)
End Enum
#End Region
#Region " GetWindowLong Diverses Declaration"
<DllImport("user32.dll", CharSet:=CharSet.Ansi, EntryPoint:="GetWindowLong")> _
Private Shared Function GetWindowLong32(ByVal hWnd As IntPtr, ByVal nIndex As Integer) As Integer
End Function
<DllImport("user32.dll", CharSet:=CharSet.Ansi, EntryPoint:="GetWindowLong")> _
Private Shared Function GetWindowLongPtr(ByVal hWnd As IntPtr, ByVal nIndex As Integer) As IntPtr
End Function
<DllImport("user32.dll", CharSet:=CharSet.Ansi, EntryPoint:="GetWindowLong")> _
Private Shared Function GetWindowLong64(ByVal hWnd As IntPtr, ByVal nIndex As Integer) As Long
End Function
#End Region
#Region " GetClassLong Diverses Declaration"
<DllImport("user32.dll", CharSet:=CharSet.Ansi, EntryPoint:="GetClassLong", SetLastError:=True)> _
Private Shared Function GetClassLong32(ByVal hWnd As IntPtr, ByVal nIndex As Integer) As Integer
End Function
<DllImport("user32.dll", CharSet:=CharSet.Ansi, EntryPoint:="GetClassLong", SetLastError:=True)> _
Private Shared Function GetClassLongPtr(ByVal hWnd As IntPtr, ByVal nIndex As Integer) As IntPtr
End Function
<DllImport("user32.dll", CharSet:=CharSet.Ansi, EntryPoint:="GetClassLong", SetLastError:=True)> _
Private Shared Function GetClassLong64(ByVal hWnd As IntPtr, ByVal nIndex As Integer) As Long
End Function
#End Region
<DllImport("user32.dll", CharSet:=CharSet.Ansi, EntryPoint:="SendMessage")> _
Private Shared Function SendMessagePtr(ByVal hwnd As IntPtr, _
ByVal wMsg As Int32, _
ByVal wParam As Integer, _
ByVal lParam As Integer) As IntPtr
End Function
'-sendmessage
Private Declare Function SendMessage _
Lib "user32" _
Alias "SendMessageA" _
(ByVal hwnd As IntPtr, _
ByVal wMsg As Int32, _
ByVal wParam As Integer, _
ByVal lParam As System.Text.StringBuilder) As Integer
Private Declare Function SendMessage _
Lib "user32" _
Alias "SendMessageA" _
(ByVal hwnd As IntPtr, _
ByVal wMsg As Int32, _
ByVal wParam As Integer, _
ByVal lParam As Integer) As Integer
Private Const WM_SETTEXT = &HC
Private Const WM_GETTEXT = &HD
Private Const WM_GETTEXTLENGTH = &HE
Private Const WM_SETICON = &H80
Private Const WM_GETICON = &H7F
Private Const ICON_SMALL = 0
Private Const ICON_BIG = 1
Private Const Icon_BIG_XP = 2
Private Enum enGetWindowLong
GWL_EXSTYLE = (-20)
GWL_HINSTANCE = (-6)
GWL_HWNDPARENT = (-8)
GWL_ID = (-12)
GWL_STYLE = (-16)
GWL_USERDATA = (-21)
GWL_WNDPROC = (-4)
End Enum
Private Enum enGetWindowLongPtr
GCLP_MENUNAME = (-8)
GCLP_HBRBACKGROUND = (-10)
GCLP_HCURSOR = (-12)
GCLP_HICON = (-14)
GCLP_HMODULE = (-16)
GCLP_WNDPROC = (-24)
GCLP_HICONSM = (-34)
End Enum
Private Const GCL_CBCLSEXTRA = -20
Private Const GCL_CBWNDEXTRA = -18
Private Const GCL_HCURSOR = -12
Private Const GCL_HICON = -14
Private Const GCL_HMODULE = -16
Private Const GCL_MENUNAME = -8
Private Const GCL_STYLE = -26
Private Const GCL_WNDPROC = -24
Private Const GCL_HICONSM = -34
Private myHwndPtr As IntPtr
#End Region
#Region " Procédures"
#Region " Publiques"
''' -----------------------------------------------------------------------------
''' <summary>
''' Crée une nouvelle instance de la classe.
''' </summary>
''' <param name="hwndptr">Hwndptr qui sera traité</param>
''' <remarks>
''' </remarks>
''' <history>
''' Proviste 28/12/2004 Created
''' </history>
''' -----------------------------------------------------------------------------
Public Sub New(ByVal hwndptr As IntPtr)
NewInst(hwndptr)
End Sub
''' -----------------------------------------------------------------------------
''' <summary>
''' Crée une nouvelle instance de la classe
''' </summary>
''' <param name="hwnd"></param>
''' <remarks>
''' </remarks>
''' <history>
''' Proviste 28/12/2004 Created
''' </history>
''' -----------------------------------------------------------------------------
Public Sub New(ByVal hwnd As Long)
NewInst(New IntPtr(hwnd))
End Sub
#End Region
#Region " Privées"
Private Sub NewInst(ByVal hwndptr As IntPtr)
myHwndPtr = hwndptr
End Sub
#End Region
#End Region
#Region " Property"
''' -----------------------------------------------------------------------------
''' <summary>
''' Cette propriété renvoie ou définie le texte associé à un hwnd.
''' </summary>
''' <value>Valeur de type string</value>
''' <remarks>
''' </remarks>
''' <history>
''' Proviste 28/12/2004 Created
''' </history>
''' -----------------------------------------------------------------------------
Public Property WindowText() As String
Get
Dim wdsTxtBuilt As System.Text.StringBuilder
Dim wdsTxtLength As Integer
wdsTxtLength = SendMessage(myHwndPtr, WM_GETTEXTLENGTH, 0, 0) + 1
wdsTxtBuilt = New System.text.StringBuilder(Chr(0), wdsTxtLength)
SendMessage(myHwndPtr, WM_GETTEXT, wdsTxtLength, wdsTxtBuilt)
Return wdsTxtBuilt.ToString
End Get
Set(ByVal Value As String)
SendMessage(myHwndPtr, WM_SETTEXT, Value.Length, New System.Text.StringBuilder(Value))
End Set
End Property
''' -----------------------------------------------------------------------------
''' <summary>
''' Retourne une valeur booléene pour savoir si l'objet associée au hwnd ( à priori une feuille ) est affichée dans la barre des tâche.
''' </summary>
''' <value>True : la form associée au hwnd passé en paramètre est affichée dans la barre des tâches</value>
''' <remarks>
''' </remarks>
''' <history>
''' Proviste 01/12/2005 Created
''' </history>
''' -----------------------------------------------------------------------------
Public ReadOnly Property ShownInTaskBar() As Boolean
Get
If myHwndPtr.Size = 8 Then 'win64
Dim wStyles As Long
wStyles = GetWindowLong64(myHwndPtr, enGetWindowLong.GWL_STYLE)
If (wStyles And enWindowStyles.WS_VISIBLE) = enWindowStyles.WS_VISIBLE Then
Dim wStylesEx As Long
wStylesEx = GetWindowLong32(myHwndPtr, enGetWindowLong.GWL_EXSTYLE)
If (wStylesEx And enWindowStyles.WS_EX_TOOLWINDOW) = enWindowStyles.WS_EX_TOOLWINDOW Then
Return False
Else
Return ((wStyles And enWindowStyles.WS_EX_APPWINDOW) = enWindowStyles.WS_EX_APPWINDOW) OrElse _
((wStyles And enWindowStyles.WS_POPUP) = enWindowStyles.WS_POPUP)
End If
Else
Return False
End If
Else
Dim wStyles As Integer
wStyles = GetWindowLong32(myHwndPtr, enGetWindowLong.GWL_STYLE)
If (wStyles And enWindowStyles.WS_VISIBLE) = enWindowStyles.WS_VISIBLE Then
Dim wStylesEx As Integer
wStylesEx = GetWindowLong32(myHwndPtr, enGetWindowLong.GWL_EXSTYLE)
If (wStylesEx And enWindowStyles.WS_EX_TOOLWINDOW) = enWindowStyles.WS_EX_TOOLWINDOW Then
Return False
Else
Return ((wStyles And enWindowStyles.WS_EX_APPWINDOW) = enWindowStyles.WS_EX_APPWINDOW) OrElse _
((wStyles And enWindowStyles.WS_POPUP) = enWindowStyles.WS_POPUP)
End If
Else
Return False
End If
End If
End Get
End Property
''' -----------------------------------------------------------------------------
''' <summary>
''' Retourne une valeur booléene pour savoir si l'objet associé au hwnd est visible ( indépendement du fait qu'il soit caché ou non )
''' </summary>
''' <value>Renvoie True si l'objet est visible</value>
''' <remarks>
''' </remarks>
''' <history>
''' Proviste 01/12/2005 Created
''' </history>
''' -----------------------------------------------------------------------------
Public ReadOnly Property Visible() As Boolean
Get
If myHwndPtr.Size = 8 Then 'win64
Return ((GetWindowLong64(myHwndPtr, enGetWindowLong.GWL_EXSTYLE) And enWindowStyles.WS_VISIBLE) = enWindowStyles.WS_VISIBLE)
Else
Return ((GetWindowLong32(myHwndPtr, enGetWindowLong.GWL_EXSTYLE) And enWindowStyles.WS_VISIBLE) = enWindowStyles.WS_VISIBLE)
End If
End Get
End Property
''' -----------------------------------------------------------------------------
''' <summary>
''' Renvoie ou définie le handle de l'icone associé à la fenetre
''' </summary>
''' <value></value>
''' <remarks>
''' </remarks>
''' <history>
''' Proviste 01/12/2005 Created
''' </history>
''' -----------------------------------------------------------------------------
Public ReadOnly Property hIcon() As IntPtr
Get
Dim hIcn As IntPtr
hIcn = SendMessagePtr(myHwndPtr, WM_GETICON, ICON_BIG, 0)
If hIcn.ToString = "0" Then
Return GetClassLongPtr(myHwndPtr, GCL_HICON)
Else
Return hIcn
End If
End Get
' Set(ByVal Value As IntPtr)
' 'MsgBox(SetClassLong(myHwndPtr, GCL_HICON, Value))
' End Set
End Property
''' -----------------------------------------------------------------------------
''' <summary>
''' Renvoie ou définie le handle de l'icone 16*16 associé à la fenetre
''' </summary>
''' <value></value>
''' <remarks>
''' </remarks>
''' <history>
''' Proviste 01/12/2005 Created
''' </history>
''' -----------------------------------------------------------------------------
Public ReadOnly Property hIconSmall() As IntPtr
Get
Dim hIcn As IntPtr
hIcn = SendMessagePtr(myHwndPtr, WM_GETICON, ICON_SMALL, 0)
If hIcn.Equals(IntPtr.Zero) Then
Return GetClassLongPtr(myHwndPtr, GCL_HICONSM)
Else
Return hIcn
End If
End Get
' Set(ByVal Value As IntPtr)
'
' End Set
End Property
#End Region
End Class
Conclusion
Merci au vieux coq pour son aide :D
Historique
- 04 novembre 2005 11:35:54 :
- j'ai corrigé deux fautes d'orthographe.
Sources de la même categorie
Commentaires
Discussions en rapport avec ce code source
|
CalendriCode
| | | L | M | M | J | V | S | D |
| | 1 | 2 | 3 | 4 | 5 | 6 |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 | | | |
|
Téléchargements
Logiciels à télécharger sur le même thème :
|
|