Ulala2
Messages postés86Date d'inscriptionlundi 27 janvier 2003StatutMembreDernière intervention10 décembre 2006
-
10 nov. 2006 à 10:34
Philippe734
Messages postés308Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention15 juin 2015
-
18 avril 2010 à 23:54
Bonjour,
je cherche le moyen de rafraichir la barre des taches (systray) de windows.
j'essaye par findwindow et sendmessage mais je ne trouve pas de message correspondant.
Ulala2
Messages postés86Date d'inscriptionlundi 27 janvier 2003StatutMembreDernière intervention10 décembre 2006 10 nov. 2006 à 10:46
Bonjour,
oui tout à fait.
le problème, c'est que j'ai une barre d'outils dont le dossier est situé sur un lecteur réseau, et si à un moment donné le serveur est redémarré ou perte du réseau alors j'ai toujours le nom de la barre d'outils, mais plus les doubles chevrons qui permettent de voir le contenu du dossier.
ce que je souhaite donc, c'est rafraichir en quelques sorte la barre d'outils afin d'avoir accès à nouveau au contenu du répertoire.
Ulala2
Messages postés86Date d'inscriptionlundi 27 janvier 2003StatutMembreDernière intervention10 décembre 2006 10 nov. 2006 à 11:01
bonjour,
bon ok.
Tu sais la barre grise ou y'a le bouton démarrer ? et bien c'est cette barre la que j'ai envie de rafraichir, plus exactement une barre d'outils que j'ai ajouté (clique droit -> barre d'outils ->nouvelle barre d'outils).
j'espère que cette fois je suis plus clair.
Vous n’avez pas trouvé la réponse que vous recherchez ?
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 10 nov. 2006 à 11:13
Une solution (à essayer... je ne l'ai pas zsswayée moi-même...) :
Cacher la barre des tâches et la réafficher aussitôt après.
Inspire toi de ceci (utilise un bouton de commande pour déclencher, par exemple) et essaye, pour voir si ta barre se rafraichit :
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub Form_Activate()
Dim X As Long, fenhwnd As Long, fen As String, ret As Long fen Space(256): fen "Shell_TrayWnd"
fenhwnd = FindWindow(fen, vbNullString) ' pour définir le handle de systray
ret = ShowWindow(fenhwnd, 2) ' il faut d'abord la "montrer", pour le cas où elle serait "masquée"
'par l'utilisateurs (choix windows, en dur)
DoEvents
ret = ShowWindow(fenhwnd, 0) ' on cache la barre des tâches
depart = Timer
While Timer < depart + 5 ' on attend ici 5 secondes, par exemple
DoEvents
Wend
ret = ShowWindow(fenhwnd, 1) ' on affiche la barre des tâches
End Sub
le cancre
Messages postés292Date d'inscriptionmercredi 25 octobre 2006StatutMembreDernière intervention27 novembre 2009 10 nov. 2006 à 11:47
Lu..... tente avec ca
LockWindowUpdate = fonction permet de désactiver (ou réactiver) le rafraîchissement d'une fenêtre
Private Declare Function LockWindowUpdate Lib "user32" Alias "LockWindowUpdate" ( ByVal hwndLock As Long)As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub Form_Activate()
LocWindowUpdate FindWindow("Shell_TrayWnd", vbNullString)Doevents
' Débloque les mises à jour
LockWindowUpdate 0
End sub
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 10 nov. 2006 à 12:07
Parce qu'il ne s'agit pas simplement d'un rafraichissement mais de bien autre chose.
Je ne sais pas ce qu'affiche ta barre des tâches, mais j'ai l'impression de ce que ce n'est pas elle qui est concernée mais le résultat de son utilisation...
A traiter en activation et gestions d'erreurs, peut-être ?...
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 10 nov. 2006 à 13:01
J'ai bien compris !
Mais : au moment ou tu "installes" ta barre des tâches, des messages Windows sont traités par Windows...
Il n'y a alors pas 36 solutions :
Soit (solution la moins complexe) gérer avec un timer et la gestion d'erreurs et décider du maintien ou non de cette barre
Soit (solution complexe) gérer les messages Windows
le cancre
Messages postés292Date d'inscriptionmercredi 25 octobre 2006StatutMembreDernière intervention27 novembre 2009 10 nov. 2006 à 13:11
En attendant de trouver une meilleure solution, bloque la mise à jour de ta boite à outils avec LockWindowUpdate <-je sais c'est pas super....sinon tu peux tres bien te faire toi meme par le code cette boite à outils...pour ton histoire c'est plus un bug de windows que autre chose
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 10 nov. 2006 à 18:05
salut,
je te laisse voir pour la récupération du handle.
en attendant tu peux essayer avec WM_PAINT (comme Le cancre te l'a suggéré)...
sur une Form, pose un timer.
F5, place la souris sur la barre des tâches, et attend 3 secondes....
Option Explicit
Private Const WM_PAINT = &HF
Private Type POINTAPI
X As Long
Y As Long
End Type
'
Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As
Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As
Long
'
Private Sub Form_Load()
Timer1.Interval = 3000
End Sub
'
Private Sub Timer1_Timer()
Timer1.Enabled = False
Dim tPos As POINTAPI, lH&
Ulala2
Messages postés86Date d'inscriptionlundi 27 janvier 2003StatutMembreDernière intervention10 décembre 2006 10 nov. 2006 à 19:51
bonjour,
merci pour ta réponse, mais ca n'a pas l'air de marcher.
par contre, j'ai réussi une fois, mais ca doit être le hasard, en supprimant la connexion manuellement (deconnecter un lecteur réseau) puis en le reconnectant, puis WM_PAINT.
j'ai essayé via la programmation, avec la commande NET USE /delete puis NET USE [file://\\lepartage\lepath \\lepartage\lepath] ... blabla mais rien à faire.
ca doit bien être possible, ca à marché une fois :)