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 !

METTRE UNE ICÔNES DANS LA BARRE DE TACHES


Information sur la source

Catégorie :Exécution Classé sous : icone, barre, tache, systray Niveau : Initié Date de création : 18/05/2000 Vu : 11 422

Note :
7,75 / 10 - par 8 personnes
7,75 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

Description

Prenez un module, une form avec un bouton et mettez une icone a votre form.
 

Source

  • A mettre dans un module :
  • 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 = 0
  • Public Const NIM_MODIFY = 1
  • Public Const NIM_DELETE = 2
  • Public Const NIF_MESSAGE = 1
  • Public Const NIF_ICON = 2
  • Public Const NIF_TIP = 4
  • '
  • Public Const GWL_WNDPROC = -4
  • '
  • Public Const WM_LBUTTONDOWN = &H201
  • Public Const WM_RBUTTONDOWN = &H204
  • Public Const WM_LBUTTONDBLCLK = &H203
  • Public Const TPM_RIGHTALIGN = &H8&
  • '
  • Public lpPrevWndProc As Long
  • Public ghWnd As Long
  • '
  • Declare Function Shell_NotifyIconA Lib _
  • "shell32" (ByVal dwMessage As Long, _
  • lpData As NOTIFYICONDATA) As Integer
  • '
  • '*** Fonctions Windows ***
  • '
  • Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  • Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
  • Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
  • Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
  • Declare Function SetMenuDefaultItem Lib "user32" (ByVal hMenu As Long, ByVal uItem As Long, ByVal fByPos As Long) As Long
  • Declare Function TrackPopupMenu Lib "user32" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal x As Long, ByVal y As Long, ByVal nReserved As Long, ByVal hwnd As Long, lprc As Any) As Long
  • '*************************
  • Public Sub IconToTray(frx As Form, msgTip$, Flag As Boolean)
  • Dim nd As NOTIFYICONDATA
  • Dim dMSG As Long
  • Dim RetVal As Integer
  • '
  • With nd
  • .szTip = msgTip$ & Chr$(0)
  • .cbSize = Len(nd)
  • .hwnd = frx.hwnd
  • .uID = 1
  • .uCallbackMessage = WM_LBUTTONDOWN
  • .hIcon = frx.Icon
  • .uFlags = NIF_MESSAGE Or NIF_ICON Or NIF_TIP
  • End With
  • '
  • If Flag Then dMSG = NIM_ADD Else dMSG = NIM_DELETE
  • RetVal = Shell_NotifyIconA(dMSG, nd)
  • End Sub
  • Function WindowProc(ByVal hw As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  • If hw = Form1.hwnd Then
  • If lParam = WM_LBUTTONDBLCLK Then
  • Form1.Show vbModeless
  • ElseIf lParam = WM_RBUTTONDOWN Then
  • MontrerMenu
  • Else
  • WindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam, lParam)
  • End If
  • Else
  • WindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam, lParam)
  • End If
  • End Function
  • Public Sub HookWindow()
  • lpPrevWndProc = SetWindowLong(ghWnd, GWL_WNDPROC, AddressOf WindowProc)
  • End Sub
  • Public Sub Unhookwindow()
  • Dim RetVal As Long
  • '
  • RetVal = SetWindowLong(ghWnd, GWL_WNDPROC, lpPrevWndProc)
  • End Sub
  • Public Sub MontrerMenu()
  • Dim hMenu As Long
  • Dim hSousMenu As Long
  • Dim RetVal As Long
  • '
  • hMenu = GetMenu(frmMenu.hwnd)
  • hSousMenu = GetSubMenu(hMenu, 0)
  • '
  • SetMenuDefaultItem hSousMenu, 0, True
  • With Screen
  • w& = (.Width \ .TwipsPerPixelX) * 0.8
  • h& = (.Height \ .TwipsPerPixelY)
  • End With
  • RetVal = TrackPopupMenu(hSousMenu, TPM_RIGHTALIGN, w&, h&, 0&, frmMenu.hwnd, ByVal 0&)
  • End Sub
  • A mettre dans votre form :
  • Option Explicit
  • Private Sub Command1_Click()
  • Unload Me
  • End Sub
  • Private Sub Form_Load()
  • ghWnd = Me.hwnd
  • HookWindow
  • IconToTray Me, "CECI est un Test", True
  • Me.Hide
  • End Sub
  • Private Sub Form_Unload(Cancel As Integer)
  • IconToTray Me, "", False
  • Unhookwindow
  • End Sub
A mettre dans un module :

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 = 0
Public Const NIM_MODIFY = 1
Public Const NIM_DELETE = 2
Public Const NIF_MESSAGE = 1
Public Const NIF_ICON = 2
Public Const NIF_TIP = 4
'
Public Const GWL_WNDPROC = -4
'
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_LBUTTONDBLCLK = &H203
Public Const TPM_RIGHTALIGN = &H8&
'
Public lpPrevWndProc As Long
Public ghWnd As Long
'
Declare Function Shell_NotifyIconA Lib _
    "shell32" (ByVal dwMessage As Long, _
    lpData As NOTIFYICONDATA) As Integer
    
'
'*** Fonctions Windows ***
'
Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Declare Function SetMenuDefaultItem Lib "user32" (ByVal hMenu As Long, ByVal uItem As Long, ByVal fByPos As Long) As Long
Declare Function TrackPopupMenu Lib "user32" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal x As Long, ByVal y As Long, ByVal nReserved As Long, ByVal hwnd As Long, lprc As Any) As Long


'*************************
    

Public Sub IconToTray(frx As Form, msgTip$, Flag As Boolean)
Dim nd    As NOTIFYICONDATA
Dim dMSG  As Long
Dim RetVal  As Integer
'
With nd
    .szTip = msgTip$ & Chr$(0)
    .cbSize = Len(nd)
    .hwnd = frx.hwnd
    .uID = 1
    .uCallbackMessage = WM_LBUTTONDOWN
    .hIcon = frx.Icon
    .uFlags = NIF_MESSAGE Or NIF_ICON Or NIF_TIP
End With
'
If Flag Then dMSG = NIM_ADD Else dMSG = NIM_DELETE
RetVal = Shell_NotifyIconA(dMSG, nd)

End Sub
Function WindowProc(ByVal hw As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If hw = Form1.hwnd Then
   If lParam = WM_LBUTTONDBLCLK Then
        Form1.Show vbModeless
   ElseIf lParam = WM_RBUTTONDOWN Then
           MontrerMenu
   Else
    WindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam, lParam)
    End If
Else
    WindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam, lParam)
End If

End Function

Public Sub HookWindow()
lpPrevWndProc = SetWindowLong(ghWnd, GWL_WNDPROC, AddressOf WindowProc)
End Sub

Public Sub Unhookwindow()
Dim RetVal As Long
'
RetVal = SetWindowLong(ghWnd, GWL_WNDPROC, lpPrevWndProc)

End Sub

Public Sub MontrerMenu()
Dim hMenu As Long
Dim hSousMenu As Long
Dim RetVal As Long

'
hMenu = GetMenu(frmMenu.hwnd)
hSousMenu = GetSubMenu(hMenu, 0)
'
SetMenuDefaultItem hSousMenu, 0, True
    With Screen
        w& = (.Width \ .TwipsPerPixelX) * 0.8
        h& = (.Height \ .TwipsPerPixelY)
    End With
    
RetVal = TrackPopupMenu(hSousMenu, TPM_RIGHTALIGN, w&, h&, 0&, frmMenu.hwnd, ByVal 0&)
End Sub




A mettre dans votre form :

    Option Explicit

Private Sub Command1_Click()
Unload Me
End Sub

Private Sub Form_Load()
   ghWnd = Me.hwnd
   HookWindow
   IconToTray Me, "CECI est un Test", True
   Me.Hide
End Sub

Private Sub Form_Unload(Cancel As Integer)
   IconToTray Me, "", False
   Unhookwindow
End Sub

Commentaires et avis

signaler à un administrateur
Commentaire de neojoce le 28/02/2002 03:29:08

SSSSSSSSSSSSSUUUUUUUUUUUUUUUUUUUUUUPPPPPPPPPPPPEEEEEEEEEEEEEEEEEERRRRRRRRRRRRRRRRRRR !!!!!!!!!!!!!
... Mais achaque fois que je quitte on me dit : ce programme va etre ferme, car il a effectué une opération non conforme , bla, bla ...

POURQUOI ???

signaler à un administrateur
Commentaire de louis52 le 19/10/2002 20:04:52

un zip stp ce serait super autrement COOL !!!

signaler à un administrateur
Commentaire de blabla le 01/12/2002 14:53:53

vi .. le zip please

signaler à un administrateur
Commentaire de moaleboss le 31/01/2003 13:41:48

Ton code est vraiment super, mais si tu y metteia un zip ou quelque chose dans le genre, ca serai super.
Merci

signaler à un administrateur
Commentaire de Urgo le 05/04/2003 14:47:59

LE ZIPPPPPPP PLEASE !!!!!

signaler à un administrateur
Commentaire de brahim431 le 13/05/2005 17:44:41

mais ou est le zip stp

signaler à un administrateur
Commentaire de Mauricet le 25/02/2006 16:00:09

Bonjour
Beaucoup de fautes d'orthographe et de précipitations pour rien
Cela ne fonctionne pas
Le bon code avec Explicit
Public Sub MontrerMenu()
Dim hMenu As Long
Dim hSousmenu As Long
Dim RetVal As Long
Dim p As POINT_TYPE
Dim w As Long
Dim h As Long

GetCursorPos p

hMenu = GetMenu(frmmenu.hwnd)
hSousmenu = GetSubMenu(hMenu, 0)
'
SetMenuDefaultItem hSousmenu, 0, True
    With Screen
        w = p.x
        h = p.y
    End With

RetVal = TrackPopupMenu(hSousmenu, TPM_RIGHTALIGN, w&, h&, 0&, frmmenu.hwnd, ByVal 0&)
End Sub

Maurice

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Recuperer les icone du systray pour creation dune barre des taches [ par lamouchexp ] VoilaJ'aimerais creer ma propre barre des taches sur windows xp.J'aimerais savoir comment recuperer toutes les icones du systray avec leur menu contex MASQUER ICONE BARRE DE TACHE [ par bouv ] Bonjour,J'aimerai savoir s'il est possible de cacher l'icone d'un programme qui se trouve dans la barre de tache.Exemple : Un logiciel se lance au dem Icone dans la barre des tache [ par Le newbie ] Salut à tous,je voudrais savoir comment au lancement de mon programme la fenêtre ne soit qu'une icône dans la barre des tâches de Windows afin que mon reduire une icone dans la barre de teches system [ par nourwahiba ] j'ai mon application vb qui accede a une base de donnée sql server...j'ai fais un installable avec inno setup et istool ..et tout va bien le probleme accéder aux informations des icones de la barre de tache [ par cepacepa ] bonjour, je sais comment creer des icones applicatifs dans la barre de tache mais est-il possible d'accéder à un icone d'une autre application pour no barre des tache [ par louloux_rsi ] Bonsoir,Comment fait on pour enlever l'application present dans la barre des taches et pour la placer dans le systray??? Merci InfoBulle sur une icone du Systray [ par Luc1ano0o ] Bonjour à tous, j'aimerais savoir comment on crée une infobulle sur une icone du systray. Le tooltip n'est pas la solution que je recherch Faire disparaitre une fenetre sans la fermer [ par syxe_mpl ] Bonjour,Je souhaiterai faire disparaitre ma form principal de la barre de tache et qu elle soit toujours active !! pour la faire réaparaitre en double Creer un service qui apparait dans la barre de tache [ par jcvid2 ] Salut,J'aimerais creer en VB.Net (Version 2003) un service qui apparaisse en barre de tâche (vous savez a droite la ou apparait la connection réseau.J Icone barre des tâches [ par dixcie ] Bonjour,lorsque je lance mon application contenant une 'notify icon', il n'y a pas de problème: l'icône s'affiche bien dans la barre des tâches.Par co


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.