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

API, COM et SDKs Delphi Discussion :

Fichier batch et shellexecute


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 228
    Par défaut Fichier batch et shellexecute
    Bonjour,
    Dans un fichier .bat j'ai ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    @echo off 
    PING MACHINE -n 2 -w 3000 2>NUL | FIND "TTL=" >NUL 
    IF ERRORLEVEL 1 (ECHO Machine introuvable)
    pause
    Maintenant, je souhaite executer ceci en Delphi, sans utiliser mon fichier batch.
    Donc, j'ai quelque chose du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    shellexecute(0,nil,'cmd.exe',PChar('/k ping '+edit1.Text+'-n 2 -w 3000 2>NUL | FIND "TTL=" >NUL IF ERRORLEVEL 1 (ECHO Machine introuvable'),'c:\',SW_SHOW);
    Mais, ceci ne marche pas...

    Merci pour toute aide.

  2. #2
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    crée ton fichier batch avec votre prog puis execute le avec shellexecut
    par example
    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
     
    procedure Tform.action;
    var  t:TListstring;
    begin
        t:=tstringlist.creat;
        t.clear;
        t.add('@echo off 
    PING MACHINE -n 2 -w 3000 2>NUL | FIND "TTL=" >NUL 
    IF ERRORLEVEL 1 (ECHO Machine introuvable) 
    pause'
       t.savetofile('c:\batch.bat');
       t.free;   
    shelexecute(0,nil,'c:\batch.bat','',1);
     
    end;

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 228
    Par défaut
    Autremment dit, comment executer plusieurs commandes DOS dans une seule fenêtre, sans répéter le "shellexecute"?

  4. #4
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    insér les dans un seul fichier batch, j'ai dit une bétise,non?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 228
    Par défaut
    Merci beaucoup Edam, ça maaaaarche!!!
    J'ai eu ton message concernant les Majuscules, mais les requettes c'est pas mon dada, alors, ça marche, c'est bon...

    Merci encore!

  6. #6
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Par défaut
    si ton objectif est de faire des pings avec delphi, pourquoi ne pas utiliser directement la dll icmp.dll ? je crois avoir vu des exemples d'utilisation de celle ci dans le forum ou dans la FAQ.

  7. #7
    Membre expérimenté
    Avatar de HumanTool
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2006
    Messages
    276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2006
    Messages : 276
    Par défaut Re: Fichier batch et shellexecute
    non edam tu n'a pas dis de bétises (techniquement) mais kikica a dit :

    Citation Envoyé par kikica
    Maintenant, je souhaite executer ceci en Delphi, sans utiliser mon fichier batch.

  8. #8
    Membre expérimenté
    Avatar de HumanTool
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2006
    Messages
    276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2006
    Messages : 276
    Par défaut
    va comprendre.... :

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 228
    Par défaut
    Voici mon côde:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    var  t: TStringList;
    begin
        t:=tstringlist.create;
        t.clear;
        t.add('@echo off');
        t.add('PING '+edit1.Text+' -n 1 -w 3000 2>NUL | FIND "TTL=" >NUL');
        t.add('IF ERRORLEVEL 0 (ECHO OK)');
        t.add('IF ERRORLEVEL 1 (ECHO Machine introuvable)');
        t.add('pause');
       t.savetofile('c:\batch.bat');
       t.free;
    shellexecute(0,nil,'cmd.exe',PChar('/k batch.bat'),'c:\',SW_show);
    Le but était de pouvoir modifier le nom de la machine via edit1.
    Maintenant je souhaite à la place de "ECHO OK" voir mon Shape1 modifier sa couleur: Shape1.color:=clblue;

    Une idée? Merci.

  10. #10
    Membre expérimenté
    Avatar de HumanTool
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2006
    Messages
    276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2006
    Messages : 276
    Par défaut
    ce serait plus facile de faire comme as dis evarisnea :
    Citation Envoyé par evarisnea
    si ton objectif est de faire des pings avec delphi, pourquoi ne pas utiliser directement la dll icmp.dll ? je crois avoir vu des exemples d'utilisation de celle ci dans le forum ou dans la FAQ.
    plutôt que d'essayer de récupérer des valeurs retournées par un batch...

  11. #11
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Bonjour,

    Pour transférer un résultat de Batch au programme qui l'a lancé, tu peux utiliser différentes solutions comme comme :

    • - avant de lancer le batch effacer un fichier de communication,
      - écrire le résultat "OK"/"Erreur"dans le fichier de communication ( ECHO xxx > C:/batchresult.txt>)
      - attendre dans le main que le fichier soit créé et le lire dans le batch.

    ou bien :
    • - lancer à la fin du batch un process de synchro qui va envoyer un évnement au process qui a lancé le batch
    etc ..

Discussions similaires

  1. Fichier Batch et fonction Choice : Un alternatif ???
    Par BilTCD dans le forum Windows
    Réponses: 43
    Dernier message: 31/08/2005, 19h18
  2. [MFC] Lancement de fichier batch
    Par spirit_1999 dans le forum MFC
    Réponses: 28
    Dernier message: 01/06/2005, 11h21
  3. comment tester la connexion depuis un fichier BATCH
    Par philippe_Aix dans le forum Oracle
    Réponses: 13
    Dernier message: 11/10/2004, 16h56
  4. Utilisation de fichiers batch
    Par shifty.net dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 01/08/2004, 16h31
  5. fichier batch + php
    Par zorian dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 27/04/2004, 11h40

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