Cacher icone + systray

WolfAryx Messages postés 8 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 7 février 2005 - 29 août 2004 à 16:38
Ze_Dam Messages postés 340 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 7 juillet 2005 - 29 août 2004 à 17:03
Bonjours,
J'aurai voulu savoir comment cachet une icone ds le systray (style Icone ATI, Mcaffe ...). MErci de me répondre.

3 réponses

Ze_Dam Messages postés 340 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 7 juillet 2005
29 août 2004 à 16:53
Met le code suivant dans un module

Option Explicit

Public Type NOTIFYICONDATA
    cbSize As Long
    hwnd As Long
    uId As Long
    uFlags As Long
    uCallBackMessage As Long
    hIcon As Long
    szTip As String * 64
End Type

Public Const NIM_ADD = &H0
Public Const NIM_MODIFY = &H1
Public Const NIM_DELETE = &H2
Public Const NIF_MESSAGE = &H1
Public Const NIF_ICON = &H2
Public Const NIF_TIP = &H4
Public Const WM_MOUSEMOVE = &H200
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_RBUTTONUP = &H205
Public Const WM_RBUTTONDBLCLK = &H206

Public Declare Function SetForegroundWindow Lib "user32" _
   (ByVal hwnd As Long) As Long
Public Declare Function Shell_NotifyIcon Lib "shell32" _
    Alias "Shell_NotifyIconA" _
    (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
Public nid As NOTIFYICONDATA


Ensuite dans Form_Load

With nid
        .cbSize = Len(nid)
        .hwnd = Me.hwnd
        .uId = vbNull
        .uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
        .uCallBackMessage = WM_MOUSEMOVE
        .hIcon = Me.Icon
        .szTip = "ToolTip de mon prog" & vbNullChar
    End With
    Shell_NotifyIcon NIM_ADD, nid


tu dois mettre ton icone dans la propriété "icone" de la form
au déchargement pour retirer l'icone :

Shell_NotifyIcon NIM_DELETE, nid
0
Ze_Dam Messages postés 340 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 7 juillet 2005
29 août 2004 à 16:55
pardon erreur d'expression :

tu dois mettre ton icone dans la propriété "icone" de la form pour qu'elle soit mise grace à nid.hIcon = Me.icon

ensuite dans le Form_Unload, eh ben tu met

Shell_NotifyIcon NIM_DELETE, nid


je crois que dans mon mess j'avais po mis d epoint entre les deux phrases cété po clair
0
Ze_Dam Messages postés 340 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 7 juillet 2005
29 août 2004 à 17:03
alors pour mettre un menu contextuel à l'icone, d'abord tu le construit dans le "menu editor". ici, tu vas donner comme nom à la broche mère mPopupSys et tu vas lui attribuer la propriété Visible = False

ensuite on va faire apparaitre la form qd on dblcliquesur l'icone, et faire apparaitre ce menue popup qd on clique droit sur l'icone (le classique coa)

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim Result As Long
    Dim msg As Long    If Me.ScaleMode vbPixels Then msg X Else msg = X / Screen.TwipsPerPixelX
    Select Case msg
        Case WM_LBUTTONDBLCLK        Me.WindowState vbNormal: Result SetForegroundWindow(Me.hwnd)
        Me.Show
        Case WM_RBUTTONUP
        Result = SetForegroundWindow(Me.hwnd): Me.PopupMenu Me.mPopupSys
    End Select
End Sub


et valaaa avec ca tu pe faire ce que tu veux avec l'icone du systray et son menu contextuel
0
Rejoignez-nous