IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

stopper une boucle par un bouton


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de lucasgaetan
    Homme Profil pro
    dessinateur BE
    Inscrit en
    Août 2011
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : dessinateur BE
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 175
    Par défaut stopper une boucle par un bouton
    Bonjour le forum,

    je suis débutant en PowerShell (désoler pour les erreur de langage). je chercher à déclencher une fonction boucle par un bouton (jusqu'ici ça se passe bien) et la stopper par un autre.
    voici mon code simplifié(c'est pour le principe) en réalité ma fonction "MaBoucle" est beaucoup plus complexe.
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    function MaBoucle(){
    	while ($run -eq $true) { 
    		$Date2Départ =  [DateTime]::NOW
    	}
    }
     
     
    #################################################
    # CONFIGURATION DE LA WINDOWS FORM
    #################################################
    #Forme 
    	# Chargement des assemblies
    	[void][System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
    	[void][System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
    	# Creation de la form principale
    	$form = New-Object Windows.Forms.Form
    	# Pour bloquer le resize du form et supprimer les icones Minimize and Maximize
    	$form.FormBorderStyle = [System.Windows.Forms.FormBorderStyle]::FixedDialog
    	$form.MaximizeBox = $False
    	$form.MinimizeBox = $False
    	# Choix du titre
    	$form.Text = "Job JCI - Mailling"
    	# Choix de la taille
    	$form.Size = New-Object System.Drawing.Size(400,250)
     
    #################################################
    # AJOUT DES COMPOSANTS
    #################################################
    #Le point (0;0) correspond au coin supérieur gauche de la fenêtre.
    #button_GO
    	$button_GO = New-Object System.Windows.Forms.Button
    	$button_GO.Text = "GO"
    	$button_GO.Size = New-Object System.Drawing.Size(355,40)
    	$button_GO.Location = New-Object System.Drawing.Size(20,50)
    	# Insertion du bouton Quitter dans la Windows Form principale
     
    #button_STOP
    	$button_STOP = New-Object System.Windows.Forms.Button
    	$button_STOP.Text = "STOP"
    	$button_STOP.Size = New-Object System.Drawing.Size(355,40)
    	$button_STOP.Location = New-Object System.Drawing.Size(20,100)
    	# Insertion du bouton Quitter dans la Windows Form principale
     
     
    #################################################
    # GESTION DES EVENEMENTS
    #################################################
     
    # Gestion event quand on clique sur le bouton OK
    $button_GO.Add_Click(
    {
    	$run = $true
    	# appelle de ma fonction 
    	MaBoucle
    })	
    # Gestion event quand on clique sur le bouton Fermer
    $button_STOP.Add_Click(
    {	
    	$run = $false
    	$Message= [System.Windows.Forms.MessageBox]::Show($Date2Départ, "Information", 0, "Information")
    	$form.Close()
    })
     
     
    #################################################
    # INSERTION DES COMPOSANTS
    #################################################
    	$form.Controls.Add($button_GO)
    	$form.Controls.Add($button_STOP)
    	# Affichage de la Windows
    	$form.ShowDialog()
    #################################################
    # FIN CONFIGURATION DE LA WINDOWS FORM
    #################################################

    je pense que je m'y prend mal, le programme se déroule en série alors que je cherche à avoir ma forme et ma fonction en exécution parallèle mais dépendante.
    Pouvez vous m’aiguiller ?
    je suis avec PowerGui script Editor V3.8.0.129

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Salut,
    Citation Envoyé par lucasgaetan Voir le message
    je pense que je m'y prend mal
    Oui car c'est du Powershell
    Avec une winform le script exécute la form et ...
    c'est tout.

    Si j'ai bien compris ton pb, il te faut utiliser des jobs, l'adaptation des traitements // en Powershell, mais ceux-ci sont autonomes de la winform (cloisonnement).
    Quelques docs ici

    A mon avis ce que tu cherches à faire n'est pas le domaine de prédilection de PS, mais je peux me tromper pour ton cas.
    Job et Winform j'ai déjà essayé sans trop de succès, c'est peut être possible mais je n'ai pas trouvé comment.
    Essaie avec WPF.

  3. #3
    Membre expérimenté Avatar de lucasgaetan
    Homme Profil pro
    dessinateur BE
    Inscrit en
    Août 2011
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : dessinateur BE
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 175
    Par défaut
    merci pour ton éclairage.
    Je vais essayer d'explorer cette nébuleuse qu'est le job.
    je posterais une solution si j'en trouve une...

  4. #4
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par lucasgaetan Voir le message
    Je vais essayer d'explorer cette nébuleuse qu'est le job.
    Ce n'est pas la notion de job qui est nébuleux, c'est le cloisonnement de PS entre la session principale, la winform, et le job.
    Pour démarrer un job, c'est Start-Job, pour l'arrêter Stop-Job, pas de quoi casser trois pattes à un canard.
    Si jamais tu veux interrompre le job puis le reprendre, ce sera + délicat. A moins d'utiliser un workflow (Suspend-Job et Resume-Job), mais ceux-ci ont d'autres contraintes ;-)
    Ce qui est relativement simple à concevoir en C# ou autre, s'avère alambiqué avec Powershell. Ce n'est peut être pas le meilleur sujet pour débuter.

    Citation Envoyé par lucasgaetan Voir le message
    je posterais une solution si j'en trouve une...
    Quel est ton traitement exactement ?

  5. #5
    Membre expérimenté Avatar de lucasgaetan
    Homme Profil pro
    dessinateur BE
    Inscrit en
    Août 2011
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : dessinateur BE
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 175
    Par défaut
    Citation Envoyé par Laurent Dardenne Voir le message
    Quel est ton traitement exactement ?
    Je checke tout les travaux d'un soft (Vault de chez autodesk) afin d'y insérer du mailling sur la modification des documents.
    Mais ce code je suis en train de le développer et ça se passe plutôt bien.

    dans un première temps je ne ferais pas d'interface graphique, je me contenterais d'une heure de début et de fin.
    mais je pensais déjà à la V2.0 où l'on pourrait déclencher/arrêter ce petit module + configuration graphique.

    Ps: c'est mon 1er code en powershell, je suis plus famillier de VBA Excel ...

  6. #6
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par lucasgaetan Voir le message
    mais je pensais déjà à la V2.0 où l'on pourrait déclencher/arrêter ce petit module.
    Si tu n'as pas de suspension de traitement, ni d'event pour informer le GUI de l'arrêt d'un job cela me semble possible.
    Ensuite avec la console tu as les events sur le suivi des jobs, comme indiqué dans le tuto sur les jobs. C'est du code avancé, mais reste simple à mettre en œuvre.

    La difficulté de coupler une gestion de job et une winform est que leur mécanisme respectif de gestion des event est différent l'un de l'autre et surtout cloisonné, la winform dans un runspace et le job dans un autre. Enfin si tu exécutes une winform en showdialog, tu bloques la gestion d'event de PS. D'où le terme alambiqué

    Bon dev.

Discussions similaires

  1. N'arrive pas a stopper une boucle
    Par Mac Twist dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 16/07/2007, 12h25
  2. Réponses: 3
    Dernier message: 04/04/2007, 16h22
  3. Recupere la valeur d'une liste par un bouton
    Par megami dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 16/01/2007, 11h27
  4. appeler une page par un bouton
    Par ph_anrys dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 28/06/2006, 17h04
  5. stopper une boucle en attendant un evenement
    Par Psykorel dans le forum Langage
    Réponses: 4
    Dernier message: 08/01/2006, 23h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo