[R] Actualiser IconTray

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Rapace15
Niveau 3
Niveau 3
Messages : 36
Enregistré le : lun. 17 mai 2010 14:15
Status : Hors ligne

[R] Actualiser IconTray

#1

Message 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
Modifié en dernier par Rapace15 le lun. 14 juin 2010 16:59, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Actualiser IconTray

#2

Message 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 :shock:

Vous ne croyez pas que 37mn c'est un peut court comme travail personnel ?
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rapace15
Niveau 3
Niveau 3
Messages : 36
Enregistré le : lun. 17 mai 2010 14:15
Status : Hors ligne

Re: [..] Actualiser IconTray

#3

Message par Rapace15 »

Tlem a écrit :A 17h14, vous dites : http://www.autoitscript.fr/forum/viewto ... 462#p32462

Et ici, à 17H51 vous avez un problème !!!

17H51 - 17H14 = 37mn :shock:

Vous ne croyez pas que 37mn c'est un peut court comme travail personnel ?
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 :shock: . 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).
Rapace15
Niveau 3
Niveau 3
Messages : 36
Enregistré le : lun. 17 mai 2010 14:15
Status : Hors ligne

Re: [..] Actualiser IconTray

#4

Message 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.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Actualiser IconTray

#5

Message 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. :roll:

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. :roll:

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. :wink:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rapace15
Niveau 3
Niveau 3
Messages : 36
Enregistré le : lun. 17 mai 2010 14:15
Status : Hors ligne

Re: [..] Actualiser IconTray

#6

Message 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 :

Code : Tout sélectionner

Run(@ScriptFullPath)            ; Je relance mon script
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.
Fichiers joints
Mes "about" avant après
Mes "about" avant après
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Actualiser IconTray

#7

Message 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. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rapace15
Niveau 3
Niveau 3
Messages : 36
Enregistré le : lun. 17 mai 2010 14:15
Status : Hors ligne

Re: [..] Actualiser IconTray

#8

Message 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...
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Actualiser IconTray

#9

Message 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 :

Code : Tout sélectionner

Run(@ScriptFullPath, @ScriptDir) ; Je relance mon script
qui fonctionne parfaitement chez moi. :wink:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rapace15
Niveau 3
Niveau 3
Messages : 36
Enregistré le : lun. 17 mai 2010 14:15
Status : Hors ligne

Re: [..] Actualiser IconTray

#10

Message 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.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Actualiser IconTray

#11

Message par Tlem »

Normalement, ceci suffit :

Code : Tout sélectionner

        Case $Actual
            Run(@ScriptFullPath, @ScriptDir)
            Exit(0)
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 ...
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rapace15
Niveau 3
Niveau 3
Messages : 36
Enregistré le : lun. 17 mai 2010 14:15
Status : Hors ligne

Re: [..] Actualiser IconTray

#12

Message 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.
Répondre