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

  1. #1
    Membre éprouvé
    Avec ShellExecute et une commande dos est t'il possible d'utiliser un Tedit pour le nom qui est entre "nom"
    D6 et Windows 10 - 64bits

    Bonjour à toutes et à tous,

    Dans une ancienne application, j'utilise un fichier .bat et je dois modifier le nom qui est entre guillemet, serait t'il possible d'utiliser un Tedit pour ce nom en utilisant ShellExecute ?

    Ma commande ".bat" pour mes vidéos familiales :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    @ECHO OFF
    cincap --extract-audio --audio-format mp3 --audio-quality 0 --output "%USERPROFILE%\Downloads\cincap\Extraction mp3\%%(title)s.%%()s" "Editurl.text"
    ECHO.
    PAUSE
    EXIT


    Merci d'avance si c'est possible,

    @+

    cincap

  2. #2
    Rédacteur/Modérateur

    Ben oui, tu passes les paramètres que tu veux au bat.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    cincap --extract-audio --audio-format mp3 --audio-quality 0 --output "%USERPROFILE%\Downloads\cincap\Extraction mp3\%%(title)s.%%()s" "%1"

  3. #3
    Membre éprouvé
    @ Andnotor, merci de ta réponse mais je n'ai pas trop saisi ta suggestion et surtout comment récupérer le nom dans mon Tedit qui se trouve sur ma fiche.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    ShellExecute(Handle, nil,pchar(chappli +'Test2.bat'),nil, nil, 0);


    Je modifie avant tout mon fichier .bat par "%1" et ensuite sur ma fiche dans le paramètre du Tedit.text ?

    Je vais essayer.

    @+,

    cincap

  4. #4
    Membre émérite
    Bonjour Cincap,

    regarde la FAQ il y a un exemple de lancement de bat avec 2 paramètres

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ShellExecute( 
    Application.Handle, 
    'open', 
    PChar(GetEnvironmentVariable('ComSpec')), 
    '/C batch.bat -param1 -param2', 
    'c:\bin', 
    SW_SHOW);


    A+
    Charly

  5. #5
    Membre éprouvé
    @ Charly910, bonsoir comment va ?

    Merci de ta suggestion, je n'ai pas encore assimilé ce principe d'autant que dans mon fichier .bat ce qui est à la place du nom "Editurl.text" se modifie suivant le fichier video.

    Je vais regarder cette Faq on verra car si cela fonctionne, je pourrai solutionner des anciennes applications.

    Encore merci.

    @+,

    cincap

  6. #6
    Membre éprouvé
    Bonjour à toutes et à tous,

    J'ai essayé de retranscrire la commande du fichier .bat directement pour l'essai avec ShellExecute et le Tedit et niet.

    J'ai testé avec "%1" sans succès.

    Je n'assimile pas pouvoir transmettre le contenu de mon Tedit directement dans le fichier .bat sans l'ouvrir et insérer le lien de ma vidéo qui se charge avec un TopenDialog et le Filename dans le Tedit.

    A moins de convertir la commande Dos pour être exploitée par ShellExecute.

    Bon dimanche,

    @+,

    cincap

  7. #7
    Modérateur

    Bonjour,
    Comme pour un programme, un fichier BAT peut utiliser des paramètres qui lui sont passés en ligne de commande ou comme arguments d'un SHELLEXECUTE.
    %1 représente le 1er paramètre (%0 étant le nom du fichier batch) :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @ECHO OFF
    cincap --extract-audio --audio-format mp3 --audio-quality 0 --output "%USERPROFILE%\Downloads\cincap\Extraction mp3\%%(title)s.%%()s" %1 // ou "%1" comme indiqué par Andnotor
    ECHO.
    PAUSE
    EXIT


    Que tu appelles en lui passant le paramètre voulu (Editurl.text), comme suggéré par Charly910 :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    ShellExecute(Handle, nil, pchar(chappli +'Test2.bat'), pchar(Editurl.text), nil, 0);
    Delphi 5 Pro - Delphi 10.3.2 Rio Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  8. #8
    Membre éprouvé
    @ tourlourou, grand merci pour cette modification, je comprends mieux l'ajout d'un paramètre il était temps à mon âge.

    J'ai du ajouter les guillemets dans le Tedit : "Nom_de_ma_video.mpeg"

    Entre temps j'avais testé avec une excellente et ancienne application réalisée par le membre Cirec concernant la commande du Dos par ShellExecute et cela fonctionnait aussi sans utiliser le .bat.

    Ce topic peut être à nouveau fermé haut la main.

    Cordialement,

    @+,

    cincap

  9. #9
    Membre émérite
    Bonjour Cincap,

    ça va bien merci; j'avais préparé ceci :



    mais j'arrive trop tard !!

    A+
    Charly

  10. #10
    Membre éprouvé
    D6 et Windows 10 droits
    Bonjour à toutes et à tous,

    @ Charly910, merci pour ton aide et j'ai quand même téléchargé le .zip pour le tester.

    Le fichier .bat seul fonctionne correctement.

    Avec ton application, la fenêtre Dos s'ouvre mais la commande ne s'exécute pas.

    A mon avis question de droit mais alors pourquoi en double cliquant sur le fichier .bat cela fonctionne.

    @+,

    cincap

  11. #11
    Membre émérite
    Bonjour Cincap,

    chez moi (W10 64 bits, D7) l'exe lance bien le bat et le fichier fic2.txt est bien créé. Peut être effectivement une question de droits : je travaille sur d:\ ...

    J'ai testé dans l'IDE et hors de l'IDE. Tout fonctionne bien. Mystère ...

    A+
    Charly

  12. #12
    Membre éprouvé
    @ Charly910, voici ce qui fonctionne chez moi sans droit :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    ShellExecute(Handle, nil, pchar(chappli +'Test2.bat'), pchar('"' +Editurl.text+ '"'), nil,SW_HIDE);


    chappli = mon dossier ou l'executable se trouve
    Editurl = Nommonfichier video

    Merci encore de ton aide.

    J'ai quand même appris a ajouter un paramètre dans un fichier .bat et l'exécuter !

    @+,

    cincap

  13. #13
    Membre émérite
    Ton code fonctionne aussi chez moi :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
      Commande := Chemin+'Fichierbat.bat' ;   // Chemin =  ChAppli 
      Code := ShellExecute(Handle, nil, pchar(Commande), pchar('"' +Edit1.text+ '"'), nil,SW_HIDE);


    Fichierbat.bat s'exécute et créé le fichier Fic2.txt

    je ne me souviens plus à quoi servent les paramètres /K et /C (il faudrait appeler le help sous Dos)

    A+
    Charly

  14. #14
    Membre éprouvé
    @ Charly910,

    Oui c'est certain la commande transmise fonctionne bien chez moi et après une modification aussi avec ta suggestion.


    je ne me souviens plus à quoi servent les paramètres /K et /C (il faudrait appeler le help sous Dos)

    Les Switches /c : Exécute la ligne de commande et referme l'interpréteur de Commande
    /k : Exécute la ligne de commande et attend que l'utilisateur referme la fenêtre dos
    @+,

    cincap

  15. #15
    Membre émérite
    Ok, merci

  16. #16
    Membre éprouvé
    Complément d'informations - Os Windows 10 64bits et D6
    Bonjour à toutes et à tous,

    Avec votre aide et mes tests, je pense ne pas avoir tout compris avec l'ajout de paramètre avec ShellExecute.

    Comme exemple :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    --output "%USERPROFILE%\Downloads\cincap\Extraction mp3\%%(title)s.%%()s" %1 // ou "%1" comme indiqué par Andnotor qui remplace "chemin de mon fichier audio"


    Ce qui fonctionne correctement !

    J'aimerai ajouter aussi mon titre en utilisant un Tedit à la place de "%%(title)s" ce qui devrait être :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    --output "%USERPROFILE%\Downloads\cincap\Extraction mp3\Tedit.text.%%()s" %1 // ou "%1" comme indiqué par Andnotor


    Même en ajoutant "%2" j'obtiens une erreur.

    Merci de votre aide.

    @+,

    cincap