Accueil > > > SYSTRAY ET PLANTAGE D'EXPLORER.EXE
SYSTRAY ET PLANTAGE D'EXPLORER.EXE
Information sur la source
Description
Voici un bout de code qui n'explique rien sur le fonctionnement des icônes dans le systray. Il y a déjà assez de sources là-dessus sur VBFrance!!!
Alors que fait ce programme me direz-vous?
Et ben, il permet de recréer l'icône de notre appli lorsqu'elle a disparu après un plantage de explorer.exe.
La méthode est simple, on crée un Hook sur notre fenêtre et on enregistre le message "TaskbarCreated". C'est à dire que lorsque Windows recréra la barre de tâches, notre appli sera avertie et donc on pourra recréer notre icône. Vous suivez???
Voilà donc rien de bien compliqué et le code est facilement intégrable dans vos applis utilisant le systray.
Source
- 'Dans le Form
-
- Option Explicit
-
- Private Sub Form_Load()
-
- InstalleHookSystray Me.HWnd
-
- IconeT.cbSize = Len(IconeT)
- IconeT.HWnd = Me.HWnd
- IconeT.uID = 1&
- IconeT.uFlags = ICONE Or TIP Or MESSAGE
- IconeT.uCallbackMessage = MOUSEMOVE
- IconeT.hIcon = Form1.Icon
- Shell_NotifyIcon AJOUT, IconeT
-
- End Sub
-
- Private Sub Form_Unload(Cancel As Integer)
-
- DesinstalleHookSystray Me.HWnd
- Shell_NotifyIcon SUPPRIME, IconeT
-
- End Sub
-
-
-
- 'Et dans le module
-
- Option Explicit
-
- 'APIs de Hook
- Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal HWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
- Private Declare Function RegisterWindowMessage Lib "user32" Alias "RegisterWindowMessageA" (ByVal lpString As String) As Long
- Private 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
-
- 'API systray
- Public Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As IconeTray) As Boolean
-
- Public Type IconeTray
- 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 AJOUT = &H0
- Public Const SUPPRIME = &H2
- Public Const MOUSEMOVE = &H200
- Public Const MESSAGE = &H1
- Public Const ICONE = &H2
- Public Const TIP = &H4
-
- Private Const GWL_WNDPROC = (-4)
- Dim m_TaskbarCreated As Long
- Dim Save_WndProc_Adresse As Long
-
- Public IconeT As IconeTray
-
- Public Sub InstalleHookSystray(lHwnd As Long)
-
- 'On installe un Hook sur le message TaskbarCreated
- m_TaskbarCreated = RegisterWindowMessage("TaskbarCreated")
- Save_WndProc_Adresse = SetWindowLong(lHwnd, GWL_WNDPROC, AddressOf Capture_Message_Windows)
-
- End Sub
-
- Public Sub DesinstalleHookSystray(lHwnd As Long)
-
- SetWindowLong lHwnd, GWL_WNDPROC, Save_WndProc_Adresse
-
- End Sub
-
- Private Function Capture_Message_Windows(ByVal HWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
-
- 'Si le message correspond alors on recrée l'icône
- If uMsg = m_TaskbarCreated Then
- Shell_NotifyIcon AJOUT, IconeT
- End If
-
- Capture_Message_Windows = CallWindowProc(Save_WndProc_Adresse, HWnd, uMsg, wParam, lParam)
-
- End Function
-
'Dans le Form
Option Explicit
Private Sub Form_Load()
InstalleHookSystray Me.HWnd
IconeT.cbSize = Len(IconeT)
IconeT.HWnd = Me.HWnd
IconeT.uID = 1&
IconeT.uFlags = ICONE Or TIP Or MESSAGE
IconeT.uCallbackMessage = MOUSEMOVE
IconeT.hIcon = Form1.Icon
Shell_NotifyIcon AJOUT, IconeT
End Sub
Private Sub Form_Unload(Cancel As Integer)
DesinstalleHookSystray Me.HWnd
Shell_NotifyIcon SUPPRIME, IconeT
End Sub
'Et dans le module
Option Explicit
'APIs de Hook
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal HWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function RegisterWindowMessage Lib "user32" Alias "RegisterWindowMessageA" (ByVal lpString As String) As Long
Private 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
'API systray
Public Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As IconeTray) As Boolean
Public Type IconeTray
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 AJOUT = &H0
Public Const SUPPRIME = &H2
Public Const MOUSEMOVE = &H200
Public Const MESSAGE = &H1
Public Const ICONE = &H2
Public Const TIP = &H4
Private Const GWL_WNDPROC = (-4)
Dim m_TaskbarCreated As Long
Dim Save_WndProc_Adresse As Long
Public IconeT As IconeTray
Public Sub InstalleHookSystray(lHwnd As Long)
'On installe un Hook sur le message TaskbarCreated
m_TaskbarCreated = RegisterWindowMessage("TaskbarCreated")
Save_WndProc_Adresse = SetWindowLong(lHwnd, GWL_WNDPROC, AddressOf Capture_Message_Windows)
End Sub
Public Sub DesinstalleHookSystray(lHwnd As Long)
SetWindowLong lHwnd, GWL_WNDPROC, Save_WndProc_Adresse
End Sub
Private Function Capture_Message_Windows(ByVal HWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
'Si le message correspond alors on recrée l'icône
If uMsg = m_TaskbarCreated Then
Shell_NotifyIcon AJOUT, IconeT
End If
Capture_Message_Windows = CallWindowProc(Save_WndProc_Adresse, HWnd, uMsg, wParam, lParam)
End Function
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
SYSTRAY APRES PLANTAGE DE EXPLORER.EXE [ par sn0wb0ard3r ]
Bonjour tout le monde...Je sais pas si vous avez remarqué, mais quand vous avez une action dans le systray (en bas à droite...) Et que explo
Icone dynamique dans le systray [ par Taurus67 ]
Alors voila, j'aimerais afficher des nombres de 0 à au moins 999 dans la barre des taches ( j'ai fait un petit programme qui affiche le ping inst
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
Mettre l'icone du programme dans le SysTray [ par scano93 ]
Salut à tous. J'ai fait plusieurs recherches sur le site à propos du SysTray, mais je n'ai rien trouvé de véritable, car les infos
systray [ par chasseurdedemon ]
salut j'ai crée un programme, j'arrive a le mettre dans le systray mais quand je clique sur son icone (dans le systray) rien ne ce passe je voud
Chargement programme [ par lookool ]
Mon application se charge au démarrage de windows en mode invisible (tâche de fond).Je souhaiterais que l'application redevienne visible si
icone d'impression enregistrement etc... dans internet explorer [ par pierrearnaudh ]
bonjour, je fais appel à vous qui dans la généralité me semble expert dans la programmation comparé à moi qui suis un pietre débutant, ce site est gén
mettre une icone dans le systray avec vb 2005 express [ par gigatrappeur ]
Salut tout le monde,j'ai programmé une petite appli (j'utilise vb 2005 express) et j'aimerais pouvoir mettre une icone dans le systray quand le progra
Faire un menu avec le systray [ par TEtnobic ]
J'aurai voulu savoir comment on fait pour faire apparaitre un menu lorsque l'on clique sur l'icone du systray.Je possede l'extension systray.ocx qui m
Simuler un clic de souris sur un icone du systray [ par legege84 ]
Bonjour,J'aimerais avoir le code pour simuler le clique de souris sur une icone du tray... Es-ce possible avec des API?C'est en fait pour faire appara
|
Derniers Blogs
[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Arnault Nouvel et Antoine Dongois Le processus à prendre : Apprendre (découvrir la plateforme) Préparer (documenter l'historique et choisir la méthode de MAJ) Test (Test de MAJ) Implémenter (Effectuer la MAJ) Valid...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOURTECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOUR par ROMELARD Fabrice
Après un retour sur l'histoire des TechDays de Paris et le fait que ce soit le plus gros event MS au monde (du fait de sa gratuité), le président de MS France (Eric Boustoullier) a fait une présentation de la vision Microsoft pour les années à venir...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|