Page 1 sur 1
[R] Actualiser IconTray
Posté : mar. 01 juin 2010 18:51
par Rapace15
Bonsoir à tous,
Je cherche à actualiser un IconTray que j'ai générer avec l'UDF ModerMenuLib.
Je n'arrive à rien... y-a-til une commande pour le faire ?
D'avance merci
Re: [..] Actualiser IconTray
Posté : mar. 01 juin 2010 21:29
par Tlem
A 17h14, vous dites :
http://www.autoitscript.fr/forum/viewto ... 462#p32462
Et ici, à 17H51 vous avez un problème !!!
17H51 - 17H14 = 37mn
Vous ne croyez pas que 37mn c'est un peut court comme travail personnel ?
Re: [..] Actualiser IconTray
Posté : mer. 02 juin 2010 09:37
par Rapace15
Parce que je pensais qu'il ne s'agissait pas du même problème.... Le post que vous mentionnez cherchait à mettre des icônes sur un IconTray. Et effectivement, la réponse qui m'a été donnée m'a grandement aidé (au passage merci à vous et à SagePourpre). Maintenant, s'il faut attendre une journée pour poster sur votre forum, je le ferai...
Effectivement mon dernier post sur le sujet précédent est à 17H14, mais le post d'avant où j'ai répondu à l'élément de réponse donné par SagePourpre est à 13H39... 17h51 - 13H39 = 4H12

. Ce délai vous parait-il acceptable ?
De plus, est-il possible de travailler sur plusieurs sujets simultanément ? J'en suis capable et il me semble que vous aussi puisque vous répondez souvent à plusieurs sujets à quelques minutes d'intervalles.
Je cherche juste à justifier cet écart qui effectivement est très court, mais l'agressivité n'est souvent pas la meilleures des réponses (me semble-t-il).
Re: [..] Actualiser IconTray
Posté : mer. 02 juin 2010 13:18
par Rapace15
Bon, certes ça n'était pas bien compliqué, mais n'y a-t-il pas plus simple que ça ?
Code : Tout sélectionner
_TrayIconDelete($MonIconTray) ; Je masque l'IconTray actuel
Run(@ScriptFullPath) ; Je relance mon script
exit(0) ; je quitte le script actuel
Merci d'avance.
Re: [..] Actualiser IconTray
Posté : mer. 02 juin 2010 14:10
par Tlem
Rapace15 a écrit :l'agressivité n'est souvent pas la meilleures des réponses (me semble-t-il).
Ce n'était absolument pas de l'agressivité, mais tout simplement une remarque.
A la lecture de vos messages, à 17H14, vous remerciez de l'aide en expliquant que cela fonctionne 'du feu de dieu'.
Je suppose donc qu'à cet instant, vous avez téléchargé et essayé l'UDF
ModerMenuLib.
37 mn plus tard, vous signalez un problème lié à vos recherches. Je suppose donc que vous vous êtes retrouvé confronté à un problème dans cet espace de temps.
Ce qui m'amène à penser que vous avez cherché une solution, mais que cette recherche n’a pas durée plus de 37mn ... Ce qui me parait un peut juste.
Je n'ai rien contre vous, je fait simplement remarqué que parfois les recherches de solutions sont un peut légères et que l'on à trop tendance à écrire un message qui souvent (en témoigne votre réponse
http://www.autoitscript.fr/forum/viewto ... 487#p32487) trouve sa réponse dans les 24 heures qui suivent.

Re: [..] Actualiser IconTray
Posté : mer. 09 juin 2010 10:03
par Rapace15
Suivant vos conseils, j'ai attendu un peu avant de marquer ce post comme résolu...
en fait la méthode que j'ai donné me pose un problème... Je ne sais pas pourquoi et encore moins comment, mais en faisant comme cela :
la commande me lance une ancienne version du programme (cf les deux a propos retournés) !
Je ne sais pas si c'est important, mais mon programme compilé se trouve dans %userprofile%\Menu Démarrer\Programmes\Démarrage lorsque je le mets ailleurs, il n'est même pas relancé.
Je n'y comprends plus rien...
Bien sur entre les deux versions de grandes avancées ont été faites
Merci de votre aide.
Re: [..] Actualiser IconTray
Posté : mer. 09 juin 2010 11:52
par Tlem
Il n'y a pas trop de logique à votre problème, mais au cas ou, essayez de remplacer votre Run par une des deux lignes suivante :
Code : Tout sélectionner
Run(@ScriptFullPath, @ScriptDir)
; Ou
Run('"' & @ScriptFullPath & '"', '"' & @ScriptDir & '"')
@ScriptFullPath renvoi le chemin complet de l'exécutable avec le nom de celui-ci. Donc en fait il pointe sur lui-même. Mais bien évidement il faut que celui-ci soit compilé pour pouvoir tester dans les bonnes conditions.

Re: [..] Actualiser IconTray
Posté : mer. 09 juin 2010 13:11
par Rapace15
Même résultat. voici le code exact que j'utilise :
Code : Tout sélectionner
$InstDir = @ScriptDir
$MonScript = '"' & $InstDir & '\SysTray.exe"'
Run($MonScript, '"' & $InstDir & '"') ; Je relance mon script
exit (0) ; je quitte le script actuel
Quelqu'un pourrait-il confirmer ma "théorie de l'échec" ?
en fait lorsque je le relance, il ne se lance pas (puisqu'il est lancé) et le exit le ferme.
Je pensais donc passé par une fonction qui créerai mon iconTray, et lorsque je clique sur actualiser, il efface bien mon icontray, m'affiche bien l'icon, mais les commandes ne fonctionnent plus (il ne passe plus dans ma fonction de gestion des évènements.
Voici ma fonction d'actualisation (case $Actual
Code : Tout sélectionner
Func MenuEvents()
global $Msg = @GUI_CtrlId
Local $cmd = $commands.Item($Msg)
MsgBox(0,"je péasse","ici avec " & $Msg)
Switch $Msg
Case $GUI_EVENT_CLOSE, $ExitGui
; On ferme le A propos
GUISetState(@SW_HIDE)
Case $aboutItem
about()
Case $Actual
_TrayIconSetState($TrayIcon1, 2) ; Hide icon
; réinitialisation de l'icontray
$TrayIcon1 = 0
$commands=0
CreateTray()
_TrayIconSetState($TrayIcon1, 2) ; Show icon
Case $ExitItem
ExitScript()
Case $MajItem
VerifMaj(true)
Case Else
ShellExecute($cmd)
EndSwitch
EndFunc ;==>MenuEvents
Lorsque je retourne sur l'iconTray, la gestion des évènements semble être déactivée...
Re: [..] Actualiser IconTray
Posté : mer. 09 juin 2010 14:51
par Tlem
Je ne comprend pas la deuxième partie de votre problème !!!
Par contre votre code :
Code : Tout sélectionner
$InstDir = @ScriptDir
$MonScript = '"' & $InstDir & '\SysTray.exe"'
Run($MonScript, '"' & $InstDir & '"') ; Je relance mon script
exit (0) ; je quitte le script actuel
n'a aucun intérêt, car si pour une raison ou une autre l'exécutable ne porte pas le même nom, alors le code ci-dessus ne fonctionnera plus ...
Donc remplacez les trois premières lignes par :
qui fonctionne parfaitement chez moi.

Re: [..] Actualiser IconTray
Posté : jeu. 10 juin 2010 10:18
par Rapace15
OK effectivement cela marche... Mais autre problème : Je me retrouve avec 2 IconTray lancées.
Mon programme se retrouve plusieurs fois dans la liste des process, j'ai donc décidé de Killer le process sur lequel je suis, ma fonction actualiser devient ceci
Code : Tout sélectionner
Case $Actual
$nProc = ProcessExists(@ScriptName) ; Je récupère le PID de l'IconTray actuelle
Run(@ScriptFullPath, @ScriptDir) ; Je lance une nouvelle IconTray
_TrayIconDelete($TrayIcon1) ; J'efface l'IconTray Initiale
ProcessClose($Pid) ; Je clos le process de l'IconTray Initiale
Ça a l'air de fonctionner, mais si tu vois un "défaut", peux-tu me le signaler ? Merci encore de ton aide précieuse.
Re: [..] Actualiser IconTray
Posté : jeu. 10 juin 2010 22:22
par Tlem
Normalement, ceci suffit :
Par contre, il se peut que vous voyez quand même un double icône dans le systray. Mais si vous passez la souris dessus, un des deux disparaitra ...
Re: [..] Actualiser IconTray
Posté : lun. 14 juin 2010 16:59
par Rapace15
J'avais plusieurs process dans mon gestionnaire de tache. C'est pourquoi j'ai géré avec un ProcessClose().
Pour moi le problème est résolu.. Merci de votre aide.