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

C++Builder Discussion :

Comment Utiliser ShellExecute ?


Sujet :

C++Builder

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 162
    Points : 62
    Points
    62
    Par défaut Comment Utiliser ShellExecute ?
    Bonjour a tous ,
    je débute avec C++ builder et je voudrais exécuter une commande
    start \\***.***.***.*** (ip)
    en utilisant ShellExecute
    ShellExecute(0,"","cmd.exe","start \\***.***.***.*** ",NULL,SW_SHOWNORMAL );

    quelle serait la syntaxe exacte pour faire fonctionner la commande ?
    merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Points : 713
    Points
    713
    Par défaut
    Bonjour

    Si vous debutez , le mieux c est de lire des exemples
    N hesitez pas à faire des recherches sur le forum

    http://www.developpez.net/forums/sea...archid=5150932

    Suivez le lien et vous trouverez des morceaux de code où c est utilisé

    Sinon il y a la faq aussi , f1 egalement dans builder pour l aide hors ligne

    http://cpp.developpez.com/faq/bcb/in...ogrammeexterne

    Utilisez la fonction ShellExecute.
    Pour lancer Notepad, par exemple :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ShellExecute(NULL,  // Handle de la fenêtre parent
                     "open", // Action à effectuer
                     "notepad.exe", // Fichier
                     "", // Paramètres
                     "", // Répertoire par défaut
                     SW_SHOWDEFAULT // Manière d'afficher
                     );
    Attention, les chaînes passées en arguments de cette fonction sont des chaînes C standard. Pour passer des AnsiString en arguments, utilisez la méthode c_str() :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // Affiche une boîte de dialogue "Ouvrir un fichier" et ouvre le fichier avec notepad.
    if (OpenDialog1->Execute())
    {
      ShellExecute(NULL,  // Handle de la fenêtre parent
                       "open", // Action à effectuer
                       "notepad.exe", // Fichier
                       OpenDialog1->FileName.c_str(), // Paramètres
                       ExtractFilePath(OpenDialog1->FileName).c_str(), // Répertoire par défaut
                       SW_SHOW // Manière d'afficher
                       );
    }

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 162
    Points : 62
    Points
    62
    Par défaut
    je voi toujours pas réaliser l' éxécution de ma ligne de commande

    ShellExecute(0,"","cmd.exe"," start \\74.125.77.104/c$",NULL, SW_SHOWNORMAL );

    enfait je veut ouvrir un disque partagé, mais surtout adapter ShellExecute a n'importe quel commande comme : ping, telnet, taskkill ....

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Points : 713
    Points
    713
    Par défaut
    sinon en utilisant des .bat et des sorties en .txt chargées ensuite dans un memo par exemple . Bien sur on detruira les fichiers créés

    1 bouton et son evenement onclick
    , 1 timer et son unique evenement
    et formcreate

    apres il suffit de creer plusieurs fonctions ou une acceptant diverses variables et reagissant selon les cas

    voilà un simple ping

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    //------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    #include "Unit1.h"
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    AnsiString Parametres  ;
    AnsiString Chemin = "c:\\ping.txt" ;
    AnsiString CheminBat="c:\\ping.bat";
    //------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner) {  }
    //------------------------------------------------------------------------
    void __fastcall TForm1::Button3Click(TObject *Sender)
    {
    Parametres ="ping www.google.fr  >"  ;
    Parametres = Parametres +  Chemin ;
    Memo1->Text=Parametres;
    Memo1->Lines->SaveToFile(CheminBat);
    ShellExecute(NULL,"open",CheminBat.c_str(),"","",SW_SHOW);
    Timer1->Enabled=true;
    }
    //------------------------------------------------------------------------
    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    { HWND hwndexe;
    if ((hwndexe = FindWindow(NULL, "C:\\WINDOWS\\system32\\cmd.exe")) != NULL)
             { Sleep(100);   }
             else{
                   Memo1->Lines->LoadFromFile(Chemin);
                   Timer1->Enabled=false;
                   DeleteFile(CheminBat);
                   DeleteFile(Chemin);
                  }
    }
    //------------------------------------------------------------------------
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
    Timer1->Enabled=false;
    Timer1->Interval=1000;
    }

  5. #5
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Tu as oublié le "/c" pour cmd.exe, apparemment, ainsi que les doubles anti-slashs...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShellExecute(0,"","cmd.exe"," /c start \\\\74.125.77.104\\c$",NULL, SW_SHOWNORMAL );
    Pour information, CreateProcess serait plus adapté à ton cas je pense, ou utiliser l'explorateur directement, aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShellExecute(NULL,"explore","\\\\74.125.77.104\\c$","",NULL, SW_SHOWNORMAL );
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 162
    Points : 62
    Points
    62
    Par défaut
    Merci avec vos réponses combinée j'ai réussi a mieu comprendre
    et a exécuter ma commande automatisé merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/02/2009, 12h06
  2. Comment utiliser ShellExecute avec un programme DOS ?
    Par RC10GT_MGT dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 22/09/2005, 14h23
  3. comment utiliser actionscript ?
    Par webs dans le forum Flash
    Réponses: 3
    Dernier message: 09/02/2003, 23h11
  4. Comment utiliser OUT ?
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 3
    Dernier message: 20/07/2002, 09h35
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

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