Page 1 sur 1

[R] Notification clic image et cacher barre des taches

Posté : mer. 27 mai 2009 12:00
par Bubule
Bonjour à tous !

Je suis nouveau sur le forum et même avant de m'y être inscrit j'avais déjà trouvé pas mal de réponse, mais maintenant j'ai un problème :

J'ai une image comme une autre et je souhaite savoir lorsque l'utilisateur clique dessus, j'ai ajouté dans le style la variable "$SS_NOTIFY" mais je ne sais pas comment récupérer le code de retour (je crois que c'est "BBD_Quelquchose") qui indique quand on clique dessus :?:
J'amerais aussi savoir, comme vous pouvez le voir dans le code ci-dessous, comment il serait possible de cacher la barre des taches sans toutefois que cacher aussi les autres fenêtes.

Merci d'avance :D , si vous avez besoin du code, le voici :

Je sais que j'en demande beaucoup mais... merci quand même :)

Code : Tout sélectionner

#include <GUIConstants.au3> 

$mwnd = GUICreate("Atlanta", @DesktopWidth, @DesktopHeight, 0, 0, $WS_MAXIMIZE + $WS_POPUP)
GUISetState()

$mnimgbt = GUICreate("", 68, 71, 10, 10, $WS_POPUP, BitOr($WS_EX_LAYERED,$WS_EX_MDICHILD), $mwnd)
GUICtrlCreatePic(@Systemdir & "\oobe\images\merlin.gif", -1, -1, "", "", $SS_NOTIFY)
GUISetState(@SW_SHOW,$pic)
 

Re: [..] Notification clic image et cacher barre des taches

Posté : mer. 27 mai 2009 12:29
par Iste
POur la premiere question, voir GUIgetmsg(), ya des exemples avec

Sinon, pour la barre des tache... :/ aucune idée

Re: [..] Notification clic image et cacher barre des taches

Posté : jeu. 28 mai 2009 13:55
par jumby
Bonjour,

Je ne suis pas sûr de te comprendre vraiment :
comment il serait possible de cacher la barre des taches sans toutefois que cacher aussi les autres fenêtes.
Mais pour cacher la barre des tâches, étant donné qu'autoIt ne permet pas de la cacher et qu'il n'y a pas de clef de registre pour la masquer on peut automatiser le click droit propriété sur celle-ci et dans l'onglet barre des tâches, décocher : 'keep the taskbar on top of other windows' (je ne sais pas la traduction exacte en français).

On automatise ceci comme cela :

Pour cacher la barre :

Code : Tout sélectionner

send("{LWIN}")
send("{APPSKEY}")
send("r")
winwait("Taskbar and Start Menu Properties", "Select this menu style for easy access to the Internet, e-mail, and your favorite programs.")
send("+{TAB}")
send("{LEFT}")
ControlCommand ( "Taskbar and Start Menu Properties", "Keep the &taskbar on top of other windows", 1101, "unCheck", "")
controlclick("Taskbar and Start Menu Properties", "OK", 1)
Pour la rétablir :

Code : Tout sélectionner

send("{LWIN}")
send("{APPSKEY}")
send("r")
winwait("Taskbar and Start Menu Properties", "Select this menu style for easy access to the Internet, e-mail, and your favorite programs.")
send("+{TAB}")
send("{LEFT}")
ControlCommand ( "Taskbar and Start Menu Properties", "Keep the &taskbar on top of other windows", 1101, "Check", "")
controlclick("Taskbar and Start Menu Properties", "OK", 1)
Bien entendu, il va falloir modifier le code suivant le langage de windows.
Ceci fonctionne très bien pour moi avec windows xp pro en anglais.

Re: [..] Notification clic image et cacher barre des taches

Posté : jeu. 28 mai 2009 17:23
par Bubule
Ok, ben merci pour la barre des taches, mais pour le GUIGetMsg, il faut que je prenne le code de retour de l'image ?

Re: [..] Notification clic image et cacher barre des taches

Posté : jeu. 28 mai 2009 18:01
par Iste
Le principe des GUI dans autoit, c'est :

Quand tu crée un controle, la fonction de création renvoi le handle du ctrl.

Code : Tout sélectionner

$handle = Guictrlcreatebutton ("bouton",0,0)
Par la suite, il te faut une boucle. Dans cette boucle tu place un GUIGetMsg() qui renvoi le handle du control sur le quel tu clic

Code : Tout sélectionner

while 1
$msg = GUIGetMsg()
wend
Et a la suite du GUIGetMsg(), des conditions (généralement un switch ou select) pour effectuer des action suivant le controle cliqué

Code : Tout sélectionner

Select
    Case $msg = $bouton
EndSelect
Soit

Code : Tout sélectionner

GUICreate ("")
$bouton = GUICtrlCreateButton("bouton",0,0)
GUISetState ()

while 1
    $msg = GUIGetMsg()
    
    Select
        Case $msg = $bouton
            MsgBox("","","salut")
    EndSelect
wend

 

Re: [..] Notification clic image et cacher barre des taches

Posté : jeu. 28 mai 2009 18:07
par jumby
Si tu cherches à détecter un click gauche, c'est très simple, il suffit de passer par le bon vieux case.
Pour reprendre ton script, voici ce que cela donnerait :

Code : Tout sélectionner

#include <GUIConstants.au3>

$mwnd = GUICreate("Atlanta", @DesktopWidth, @DesktopHeight, 0, 0, $WS_MAXIMIZE + $WS_POPUP)
GUISetState()

$mnimgbt = GUICreate("", 68, 71, 10, 10, $WS_POPUP, BitOr($WS_EX_LAYERED,$WS_EX_MDICHILD), $mwnd)
$Pic1 = GUICtrlCreatePic(@Systemdir & "\oobe\images\merlin.gif", -1, -1, "", "", $SS_NOTIFY) ; La variable $Pic1 représente toute la guictrl de l'image, de cette manière on réutilise cette variable plus tard avec case pour définir ce qui se passe lorsque l'on click dessus.

GUISetState(@SW_SHOW,$pic)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Pic1
        MsgBox(0, "Click détecté", "Click détecté")
    EndSwitch
WEnd
 

Re: [..] Notification clic image et cacher barre des taches

Posté : mar. 02 juin 2009 17:20
par Bubule
Ok, ben merci à vous, je l'ai pas testé, je vais le le faire.
Je connaît le principe de fonctionnement de AutoIT, mais je ne comprends pas du tout les fonctions Select et Case

Re: [..] Notification clic image et cacher barre des taches

Posté : mar. 02 juin 2009 17:48
par TaPuZ
Select ... EndSelect sont les deux bornes dans lesquelles tu vas utiliser les "cases"

Pourquoi?

Si tu as plusieurs cas de figure auxquels il faut répondre.
Le cas où $var = 1, celui où $var = 2, et les autres cas...

Tu indiques à l'interpréteur que tu vas utiliser des "cases" (cas de figure) grâce à "Select"

et tu indiques que tu as fini de lister tes cas de figures avec EndSelect

Du coup ça donne un truc du genre

Code : Tout sélectionner

Select ; je vais utliiser la fonction case
  Case $var = 1 ; si jamais $var = 1
    Action 1 ; je fais mon action 1
  Case $var = 2 ; si jamais $var = 2
   Action 2 ; je fais mon action 2
  Case Else ; si jamais c'est un autre cas de figure
  Action 3 ; je fais mon action 3
EndSelect ; Ayé, j'ai fini de lister mes cas de figure...
 

Re: [..] Notification clic image et cacher barre des taches

Posté : sam. 06 juin 2009 10:25
par Bubule
Ok, j'ai compris, on peut utiliser aussi les ElseIf, c'est un peu pareil non ?

Re: [R] Notification clic image et cacher barre des taches

Posté : sam. 06 juin 2009 13:21
par Iste
C'est exactement pareil. Les Select et Switch sont la juste pour etre plus pratique

Code : Tout sélectionner

If $var = 1 Then
    $num = "A"
ElseIf $var = 2 Then
    $num = "A"
ElseIf $var = 3 Then
    $num = "B"
ElseIf $var = 4 Then
    $num = "B"
Else
    $num = 0
EndIf

Code : Tout sélectionner

Select
    Case $var = 1
        $num = "A"
    Case $var = 2
        $num = "A"
    Case $var = 3
        $num = "B"
    Case $var = 4
        $num = "B"
    Case Else
        $num = 0
EndSelect

Code : Tout sélectionner

Switch $var
    Case 1 To 2
        $num = "A"
    Case 3 To 4
        $num = "B"
    Case Else
        $num = 0
EndSwitch

Re: [R] Notification clic image et cacher barre des taches

Posté : dim. 07 juin 2009 18:53
par Bubule
Ok, ben merci, c'est pas bête, je ne comprennais pas ces fonctions avant. Maintenant sa va être plus pratique !

Merci :D