[..] Action ne s'effectue pas après appui sur un bouton

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
XeniOne
Niveau 2
Niveau 2
Messages : 19
Enregistré le : mar. 27 sept. 2011 07:56
Status : Hors ligne

[..] Action ne s'effectue pas après appui sur un bouton

#1

Message par XeniOne »

Bonjour,

j'essaie de créer un utilitaire qui me permettrai de balancer un raccourci d'un exécutable sur le bureau d'un PC distant (pour des installations de logiciels, au lieu de se taper un chemin long comme le bras).

Voici le code:

Code : Tout sélectionner

#cs ----------------------------------------------------------------------------

 AutoIt Version : 3.3.6.1
 Auteur:         MonNom

 Fonction du Script :
    Modèle de Script AutoIt.

#ce ----------------------------------------------------------------------------

; Début du script - Ajouter votre code ci-dessous.
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
Local $msg
Local $Printscreen = "Printscreen"
Global $Form1 = GUICreate("Gestion logiciels", 576, 107, 192, 124)
Global $Buttonracc = GUICtrlCreateButton("Créer raccourci", 285, 52, 100, 30)
Global $Buttonproc = GUICtrlCreateButton("Ouvrir procédure", 400, 52, 100, 30)
Global $Label3 = GUICtrlCreateLabel("Liste logiciels", 56, 40, 70, 28)
Global $Combo1 = GUICtrlCreateCombo("Combo1", 56, 56, 225, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, $printscreen & "|Exemple 2", "")
Global $Inputsearch = GUICtrlCreateInput("", 336, 8, 137, 21)
Global $Label1 = GUICtrlCreateLabel("Rechercher", 270, 10, 60, 17)
Global $Label2 = GUICtrlCreateLabel("Poste", 20, 10, 60, 17)
Global $Inputposte = GUICtrlCreateInput("", 55, 8, 137, 21)
Global $Buttontrouver = GUICtrlCreateButton("Trouver", 475, 6, 73, 25)
Global $readcombo = GUICtrlRead($Combo1)
Global $readposte = GUICtrlRead($Inputposte)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
  Case $GUI_EVENT_CLOSE
   Exit


;Bouton création raccourci

case $Buttonracc

    If ($readcombo = "Printscreen") Then
Run(@ComSpec & " /k xcopy data\shortcut\PrintScreen \\" & $Inputposte & "'\C:\Documents and Settings\All Users\Bureau\'")
        EndIf
        
 EndSwitch
WEnd

 
Bien entendu, le raccourci sera en fonction du Combo, c'est pour cela que j'utilise des If et des Then etc.... mais rien ne se passe. Je comprends pas.

Merci du coup de main, salut !
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Action ne s'effectue pas après appui sur un bouton

#2

Message par blacksoul305 »

Salut,

est-ce que le code suivant ne vous conviendrez pas ?

Code : Tout sélectionner

While 1
    Case $Buttonrac
        $readcombo = GUICtrlRead($Combo1)
        If $readcombo = "PrintScreen" Then
            Run(@ComSpec & " /k xcopy data\shortcut\PrintScreen \\" & $Inputposte & "'\C:\Documents and Settings\All Users\Bureau\'")
        EndIf
    EndSwitch
WEnd

 
Étudiant en 2ème année de Licence Informatique.
XeniOne
Niveau 2
Niveau 2
Messages : 19
Enregistré le : mar. 27 sept. 2011 07:56
Status : Hors ligne

Re: [..] Action ne s'effectue pas après appui sur un bouton

#3

Message par XeniOne »

Merci ça fonctionne :)

Ca serait donc un problème avec la variable $readcombo1 qui était mal placée?
Je ne comprends d'ailleurs pas toute cette histoire, parfois ils suffit de mettre les variables en haut du script (comme pour la Gui etc...) et parfois il faut les placer directement dans avant les actions du code.
Ne serait-ce pas parce qu'il y a un While que je dois remettre cette variable à cet endroit?
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Action ne s'effectue pas après appui sur un bouton

#4

Message par mikell »

XeniOne a écrit :parfois il faut les placer directement dans avant les actions du code
Yes ton analyse est correcte
Il faut que la combo soit lue au bon moment (au moment de l'action)
Dans ton 1er script la combo affiche "Combo1" donc c'est ce qui est lu dans la variable par le GuiCtrlRead et utilisé dans la boucle
Dans le script de blacksoul la combo est lue juste avant l'action, donc si tu y sélectionnes "PrintScreen" avant de presser sur le bouton, là ça marche ^^
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Action ne s'effectue pas après appui sur un bouton

#5

Message par blacksoul305 »

Si j'devais donner un conseil aux débutants en Autoit ça serait de mettre des commentaires. La programmation, c'est surtout une histoire de logique (de maths plus loin en Autoit ou bien dans les autres langages de progs).
Je dis débutant mais (presque) tout le monde met des commentaires dans son programme.

- Pour le débutant c'est pour voir comment son code avance, la logique de celui-ci, comment le comprendre et le poursuivre.

- Pour d'autres c'est pour se retrouver, pour se rappeler de l'utilité d'une ligne peu concrète dans les termes.

Quand ton code fait pas mal de ligne, c'est méga-important de mettre des commentaires. Tu peux voir que TT22 pour son logiciel Art-OS utilise des commentaires. Tu n'en verras pas beaucoup car ça fait pas mal de temps maintenant qu'il de développe, mais il'y'en a !

Allez, à plus et bonne continuation !

EDIT : Et au fait, pour les codes sources volumineux, pense à mettre une balise "spoiler".
Étudiant en 2ème année de Licence Informatique.
Répondre