Page 1 sur 2

[R] Menu Systray Grisé le Démarrer

Posté : lun. 01 juin 2009 15:09
par C3D
Bonjour,

Avec l'aide de quelques scripts que j'ai trouvé sur différents sites et forums j'ai plus ou moins réussis à faire ce que je voulais c'est à dire un exe a son lancement qui m'ouvre et démarre mes serveur via un batch.

Mon Problème :
Au lancement de mon exe tous fonctionne bien sauf que mon Démarrer est Normal et mon Arrêté est Grisé (pas cliquable) j'aimerai faire l'inverse (logique en même temps)

Voila le code de mon menu systray :
► Afficher le texte

J'en profite pour demandé aussi comment faire pour ajouté un texte sur la tranche du menu (Partie blanche a gauche du menu), j'ai trouvé pas mal de scripts mais impossible de l'ajouté sur celui-ci.


En vous remerciant pour votre aide.

Re: Menu Systray Grisé le Démarrer

Posté : lun. 01 juin 2009 22:35
par jbnh
Et les règles de présentation d'un message ? :P hein ?

Re: Menu Systray Grisé le Démarrer

Posté : lun. 01 juin 2009 22:42
par C3D
Oups désole pour l'oublie je corrige cela :)

Re: [..] Menu Systray Grisé le Démarrer

Posté : lun. 01 juin 2009 23:54
par ani
pour grisé le contrôle du menu systray

Code : Tout sélectionner

TrayItemSetState($Tray_ControlID,128) ; $TRAY_DISABLE

Re: [..] Menu Systray Grisé le Démarrer

Posté : mar. 02 juin 2009 00:07
par C3D
Merci mais comme la méthode posté sur le script original quand le Démarrer est grisé et que je clique sur Arrêter mon serveur s'arrête bien mais par contre le démarrer reste grisé donc obligé de relancer l'exe

Re: [..] Menu Systray Grisé le Démarrer

Posté : mar. 02 juin 2009 12:12
par jumby
Pour enlever le grisé du controle du menu systray :
TrayitemSetState($Tray_ControlID , 64)


Pour faire ce que tu souhaites :

Lorsque l'on clic sur le tray démarrer :

Code : Tout sélectionner

TrayItemSetState($mnuZMWSStart , 128) ; On désactive le menu démarrer
TrayitemSetState($mnuZMWSStop, 64)   ; On active le menu Arrêter
Lorsque l'on clic sur le tray arrêter :

Code : Tout sélectionner

TrayitemSetState($mnuZMWSStart, 64) ; On active le menu démarrer
TrayitemSetState($mnuZMWSStop, 128) ; On désactive le menu Arrêter
En intégrant ceci dans l'intégralité de ton script cela donne :
► Afficher le texte

Re: [..] Menu Systray Grisé le Démarrer

Posté : mar. 02 juin 2009 12:14
par C3D
Merci jumby j'essaye cela :)

EDITON :
J'ai essayé mais j'ai toujours le même résultat c'est a dire au lancement de l'exe le démarrer est bien grisé et pas l'arrêter, par contre après le lancement total de l'appli c'est l'inverse donc Démarrer Visible et Arrête (Grisé).
J'ai essayé pas mal de truc cette nuit et j'ai toujours le même résultat a ce demandé si c'est pas mes fichiers .bat qui foute le bordel non ?

Re: [..] Menu Systray Grisé le Démarrer

Posté : mar. 02 juin 2009 12:28
par jumby
J'ai testé ton script avec seulement l'affichage du systray. Cela marche nickel pour moi.

ça donne ceci lorsque l'on met que le systray. Constate par toi même l'effet désiré est là :
► Afficher le texte

Re: [..] Menu Systray Grisé le Démarrer

Posté : mar. 02 juin 2009 13:22
par C3D
Merci ,

Alors la cela ne me grise ni l'un ni l'autre par contre

PS: moi aussi l'autre fonctionne mais au bout de quelques secondes le temps que le bat se ferme il me grise le arrêter.

Re: [..] Menu Systray Grisé le Démarrer

Posté : mar. 02 juin 2009 13:49
par jumby
Alors j'ai trouvé ce qui posait le problème.
Dans ton script, il y a une fonction appelée UpdateMenu() dans laquelle il y a :

Code : Tout sélectionner

Func UpdateMenu()
   
    ; MAJ des menus selon ZMWS
    If ProcessExists($DPStart) Then
        TrayItemSetState($mnuZMWSStart, $TRAY_CHECKED + $TRAY_DISABLE)
        TrayItemSetState($mnuZMWSStop, $TRAY_ENABLE +  $TRAY_DEFAULT)
       
    Else
        TrayItemSetState($mnuZMWSStart, $TRAY_UNCHECKED + $TRAY_ENABLE +  $TRAY_DEFAULT)
        TrayItemSetState($mnuZMWSStop, $TRAY_DISABLE)
       
    EndIf
   
    ; MAJ des menus de la console
    ; Récupère l'état de la fenêtre de la console
    $state = WinGetState($DPStart, "")

    ; Test si fenêtre visible
    If BitAnd($state, 2) Then   ; 2 = Visible
   
    EndIf
EndFunc
 
Cette fonction modifie l'affichage des tray, à la condition que le processexist soit valide :
If ProcessExists($DPStart) Then

Or, au début du fichier, tu as défini la variable $DPStart comme ceci :
$DPStart = Run("serveurdp\Start.bat")

La fonction ProcessExists est donc jamais vraie, puisque tu n'as pas définit la variable $DPStart comme le nom du fichier (ne doitt pas contenir de répertoire). De plus, l'exécution de fichier .bat ne constitue pas de processus autre que 'cmd.exe'. Il est donc impossible de garder la fonction telle qu'elle en utilisant des fichiers .bat.

Je te propose donc de passer par la fonction UpdateMenu en la modifiant, dans ce cas ton script aura le code suivant :
► Afficher le texte
Cette proposition de modification a un défaut.
Le systray sera mis à jour même si l'exécution ne c'est pas faite correctement.
Si tu tiens vraiment à modifier ton systray lorsque l'exécution se fait correctement fait moi le savoir j'pourrais te modifier cela.

Re: [..] Menu Systray Grisé le Démarrer

Posté : mar. 02 juin 2009 15:17
par C3D
Merci à toi j'avoue que je doit analysé ton post pour comprendre tous cela lol

Apparemment entre deux rouleaux de peinture le système fonctionne il y a juste le démarré qui ne fait pas l'action start.bat mais cela ne doit être rien je fait regardé cela, par contre par défaut donc dès que je le lance le exe, les deux sont Normal (Démarrer et Arrêté) par contre si je fait Arrêté le serveur s'arrête bien et le Démarrer est grisé et idem si j'appuie sur démarrer l'arrêté est grisé

Je te remercie beaucoup je vais finir ma peinture et regardé cela pour comprendre et réparé le bug du démarrer :)

Je te tient au courant :)


EDITION:
Concernant le bug du démarré sans l'action start.bat j'ai changé cela :

Code : Tout sélectionner

Func ZMWSStart()
Run($DPStart & " " & $ZMWSCmdLineStart)
EndFunc

EN

Code : Tout sélectionner

Func ZMWSStart()
Run("serveurdp\Start.bat")
EndFunc
Et cela fonctionne bien apparemment :) reste le Démarrer par défaut a grisé
Encore merci

Re: [..] Menu Systray Grisé le Démarrer

Posté : mar. 02 juin 2009 15:25
par jumby
Essai ceci :
► Afficher le texte

Re: [..] Menu Systray Grisé le Démarrer

Posté : mar. 02 juin 2009 15:27
par C3D
Des petites captures pour mieux comprendre :

Au lancement de mon exe :
Image

J'appuie sur Arrêté :
Image

J'appuie sur Démarrer :
Image

Re: [..] Menu Systray Grisé le Démarrer

Posté : mar. 02 juin 2009 15:29
par C3D
jumby : Rapide toi je t'en remercie, ton nouveau code me fait l'inverse donc le Arrêté en grisé lol décidément

Re: [..] Menu Systray Grisé le Démarrer

Posté : mar. 02 juin 2009 15:53
par jumby
Et là ? ^^
► Afficher le texte

Re: [..] Menu Systray Grisé le Démarrer

Posté : mar. 02 juin 2009 15:54
par C3D
Ha ba la j'ai une erreur direct sans lancement
TrayItemSetState($$mnuZMWSStart, $TRAY_DISABLE)
TrayItemSetState(^ ERROR
>Exit code: 1 Time: 0.220

Re: [..] Menu Systray Grisé le Démarrer

Posté : mar. 02 juin 2009 15:59
par jumby
Erreur de syntaxe désolé. Décidément j'fais que de la ***** :

TrayItemSetState($mnuZMWSStart, $TRAY_DISABLE)
► Afficher le texte

Re: [..] Menu Systray Grisé le Démarrer

Posté : mar. 02 juin 2009 16:01
par C3D
Zenn t'inquiète pas c'est pas moi qui va te dire quelque chose pour une erreur vu ce que tu fait pour moi :)

Par contre le dernier aussi :

Code : Tout sélectionner

TrayItemSetState($$mnuZMWSStart, $TRAY_DISABLE) 
TrayItemSetState(^ ERROR
>Exit code: 1    Time: 0.212

Re: [..] Menu Systray Grisé le Démarrer

Posté : mar. 02 juin 2009 16:03
par C3D
Non c'est bon juste que j'ai recopier le spoiler lol

C'est bon sa fonctionne niquel la :) Je te remercie énormément :)

Re: [..] Menu Systray Grisé le Démarrer

Posté : mar. 02 juin 2009 16:05
par C3D
Dit moi j'en profite aussi pour ma seconde question avec un tel code est ce laborieux de rajouter un texte comme sur la capture ci dessous ou c'est juste une ligne ??

Image