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

Delphi Discussion :

Command cmd.exe qui "pointe" sur un répertoire à l'ouverture


Sujet :

Delphi

  1. #1
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut Command cmd.exe qui "pointe" sur un répertoire à l'ouverture
    Bonsoir,

    Je suis entrain de voir pour créer une petite interface pour l'interprêteur ffmpeg qui est en ligne de commande. Il en existe pas mal, mais moi j'aimerai faire ma propre interface, histoire d'approfondir ...

    Alors voilà, mon problème. J'essaie tant bien que mal à lancer la commande cmd.exe via un ShellExecute, celui devant s'ouvrir de façon à ce que je vois apparaître ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c:\RepertoireDeMonApplication>
    Puis, lancer une commande propre à ffmpeg, donc faire par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c:\RepertoireDeMonApplication>ffmpeg -i fichiervideo.flv -f avi fichiervideo.avi
    Le soucis, c'est que je ne sais vraiment pas comment faire en sorte de me positionner sur le répertoire de l'application et lancer la commande.

    Au passage, j'ai regardé l'aide de cmd.exe et il faudrait utiliser l'option /k pour
    lancer une commande ...
    Aussi, je vous montre mon code :


    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
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    if OpenDialog1.Execute then
    begin
      Edit1.Text:=OpenDialog1.FileName;
    end;
     
    end;
     
    procedure TForm1.Button2Click(Sender: TObject);
    var
    traitement : string;
    begin
      traitement := 'ffmpeg -i '+Edit1.Text+' -f avi '+ExtractFilePath(Application.ExeName)+'fichiervideo.avi';
      ShellExecute(0,
                  'open',
                  'cmd',
                  PChar('/k cd '+ExtractFilePath(Application.ExeName)),
                  nil,
                  SW_SHOWNORMAL
                  );
    end;
    Le truc bizarre :
    Le clic sur Button2 directement, j'arrive bien à ouvrir le dossier là où est mon application mais lorsque je fais le button1 puis le 2, ça m'ouvre sur le répertoire FileName du OpenDialogue...

    Merci d'avoir pris la peine de lire tout ce post!
    J'espère avoir été clair et que vous pourrez m'éclaircir.
    Merci

  2. #2
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    normalement ShellExecute prends un parametre qui est le repertoire d'execution de l'applciation.

    Normalement celui que tu as mis a nil si mes souvenirs sont bon

  3. #3
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Citation Envoyé par "ShellApi
    function ShellExecute(hWnd: HWND; Operation, FileName, Parameters, Directory: PChar; ShowCmd: Integer): HINST; stdcall;

  4. #4
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Merci Clorish!
    J'ai lu à travers les lignes ...

    Mon application lance bien le cmd.exe au bon endroit! Super

    j'ai fait ceci maintenant !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TForm1.Button2Click(Sender: TObject);
    var
    traitement : string;
    begin
      traitement := 'ffmpeg -i '+Edit1.Text+' -f avi '+ExtractFilePath(Application.ExeName)+'fichiervideo.avi';
      ShellExecute(0,
                  'open',
                  'cmd',
                  PChar('/k '+PChar(traitement)),
                  Pchar(ExtractFilePath(Application.ExeName)),
                  SW_SHOWNORMAL
                  );
    end;
    Il me reste quelques problèmes à résoudre car je ne sais pas si je le fais dans le bon ordre le traitement ...
    Je laisse ouvert le post pour le moment !

    Merci

    [EDIT] J'ai trouvé mon erreur, donc je poursuis! Merci encore

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

Discussions similaires

  1. exe qui marche partout sauf sur une machine particuliére
    Par 461219 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 22/01/2008, 11h49
  2. [Access] Processus cmd.exe qui ne se ferment pas
    Par bitou_77 dans le forum Access
    Réponses: 2
    Dernier message: 30/08/2006, 19h55
  3. Réponses: 2
    Dernier message: 29/05/2006, 13h43

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