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

Interfaces Graphiques Perl Discussion :

Executer un des commandes externes avec perl/tk


Sujet :

Interfaces Graphiques Perl

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 112
    Points : 58
    Points
    58
    Par défaut Executer un des commandes externes avec perl/tk
    Salut a tous,

    J'ai plusieurs programme en perl qui marche tres bien en ligne de commande sous cmd.exe.J'ai commencé a faire une interface graphique en tk pour faciliter l'accès a tous mes programmes.

    Je me pose les questions suivantes :

    -comment lancer une commande (genre dir, psexec ) depuis l'interface graphique ? existe t il des objets exprés pour cet usage ?
    -comment faire des commandes dans un cmd.exe sans que la fenêtre noire soit affichée ?
    -est il possible de lancer des programmes perl .pl depuis l'interface graphique tk ? si oui, peut ton suivre la progression du pl pour affichier une progress bar ?

    merci d'avance pour vos réponses.

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Citation Envoyé par icicmoi Voir le message
    Salut a tous,

    J'ai plusieurs programme en perl qui marche tres bien en ligne de commande sous cmd.exe.J'ai commencé a faire une interface graphique en tk pour faciliter l'accès a tous mes programmes.
    C'est une bonne idée.

    Citation Envoyé par icicmoi Voir le message
    Je me pose les questions suivantes :

    -comment lancer une commande (genre dir, psexec ) depuis l'interface graphique ? existe t il des objets exprés pour cet usage ?
    Tout dépend de ce que tu veux lancer. Par exemple faire un dir via une commande système n'a pas de sens et n'est point portable, il est plutôt conseillé de le faire en Perl directement.

    Citation Envoyé par icicmoi Voir le message
    -comment faire des commandes dans un cmd.exe sans que la fenêtre noire soit affichée ?
    Sous Windows, il est toujours possible d'utiliser des modules Win32 permettant de lancer des exe ou programmes externes. Reste à savoir le type de commande à lancer. Eviter la fenêtre noir est possible en utlisant wperl. Bref, tout dépend de ce qu'il ya à faire.


    Citation Envoyé par icicmoi Voir le message
    -est il possible de lancer des programmes perl .pl depuis l'interface graphique tk ?
    oui
    Citation Envoyé par icicmoi Voir le message
    si oui, peut ton suivre la progression du pl pour affichier une progress bar ?
    Non, car il faudrait avoir la main dans le programme en question. Néanmoins, si ce script est lui même en Perl/Tk, il peut créer une barre de progression permettant de voir son évolution.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 112
    Points : 58
    Points
    58
    Par défaut
    Tout d'abord, merci pour ces réponses.

    Tout dépend de ce que tu veux lancer. Par exemple faire un dir via une commande système n'a pas de sens et n'est point portable, il est plutôt conseillé de le faire en Perl directement.
    Qu'entends tu par "le faire en perl directement" , pourrais tu me fournir un exemple ?




    Mes programmes perl actuels lancent des commandes dans un shell cmd.exe comme psexec, sc (pour gérer les services à distance ....)
    Ma question est donc, comment lancer des commandes a travers un shell via perl tk ?

    exemple concret : si je met l'instruction
    $resultat= `sc \\$monserveur start snmp`

    Ca ne devrait pas marcher justement car ma la commande n'est pas lancée depuis un shell cmd.exe. Pourrais tu éventuellement me fournir un morceau de code pour réaliser cette opération via perl tk ?

    Est ce que tu pourrais aussi me donner un exemple concret qui lancer un programme pl depuis perl tk ?
    Merci par avance.

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    voici un script fait en va vite qui permet de lancer 3 commandes DOS via un clique bouton :
    Code : 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
    #!/usr/bin/perl
    use warnings;
    use strict;
    use utf8;
     
    use Tk;
     
    my $main = MainWindow->new(
        -background => '#BDC5EE',
        -title      => 'exemple Commande shell',
    );
     
    my $WidgetResult = $main->Scrolled('Text',
        -scrollbars             => 'osoe',
    )->pack( qw/ -fill both -expand 1 / );
    for my $commande ( 'dir', 'DATE /T', 'VER') {
        $main->Button(
            -text             => "Commande $commande",
            -command          => sub { 
                my $result = `$commande`;
                $WidgetResult->delete('1.0', 'end');
                $WidgetResult->insert('end', $result);
            },
        )->pack;  
    }
     
    MainLoop;
    Tu peux le tester et voir.

    Quand je parlais de faire en perl directement, ça voulait dire d'utiliser OPENDIR et lister les répertoires au lieu d'utiliser la commande dir de Windows.

    Pour lancer des exécutables, tu peux utiliser le module suivant Win32::Process

    Pour lancer des service à distance, ce module le fait aussi proprement Win32::Service

    Tout ceci pour te montrer qu'il est souvent plus simple d'abord sur le CPAN s'il y a des modules permettant de faire les choses avant de faire des commandes systèmes.

    Essaye de faire un début de code Perl/Tk et montre le nous pour qu'on puisse t'aider si nécessaire.

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/11/2007, 23h07
  2. execution d'une commande externe
    Par crazykangourou dans le forum Langage
    Réponses: 9
    Dernier message: 30/03/2007, 12h36
  3. Peut-on utiliser des commandes linux avec PERL
    Par undercrash dans le forum Linux
    Réponses: 2
    Dernier message: 01/03/2007, 14h12
  4. Appel des commande externe
    Par rod59 dans le forum Langage
    Réponses: 1
    Dernier message: 30/10/2006, 19h51
  5. lancer une commande unix avec perl
    Par dm_manu dans le forum Langage
    Réponses: 1
    Dernier message: 02/08/2006, 19h41

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