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
[WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
LISTER KEYS.KEYLISTER KEYS.KEY par Onin42
Cliquez pour lire la suite par Onin42
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|