2010-07-31 10 views
4

Comment puis-je exécuter cette commande à partir de mon application Delphi?Comment faire pour exécuter la ligne de commande à partir de Delphi?

C: \ myapppath \ appfolder> appname.exe/sText save.txt

j'ai essayé le code suivant:

ShellExecute(0, nil, 'cmd.exe', 'cd C:\myapppath\appfolder', nil, SW_Hide); 
ShellExecute(0, nil, 'cmd.exe', 'appname.exe /stext save.txt', nil, SW_Hide); 

Mais ça n'a pas marché. Quelqu'un peut-il fournir une solution?

Répondre

7

Pour exécuter une commande CMD, vous devez utiliser le drapeau /C de cmd.exe:

ShellExecute(0, nil, 'cmd.exe', '/C cd C:\myapppath\appfolder', nil, SW_HIDE); 
ShellExecute(0, nil, 'cmd.exe', '/C appname.exe /stext save.txt', nil, SW_HIDE); 

Cependant, cela va créer deux sessions différentes, il ne fonctionnera pas. Mais vous pouvez utiliser ShellExecute pour exécuter appname.exe directement, comme ceci:

ShellExecute(0, nil, 'appname.exe', '/stext save.txt', nil, SW_HIDE); 

Mais vous devez spécifier les noms de fichiers correctement.

Je ne

var 
    path: string; 

begin 
    path := ExtractFilePath(Application.ExeName); 
    ShellExecute(0, nil, PChar(Application.ExeName), PChar('/stext "' + path + 'save.txt"'), nil, SW_HIDE); 
end; 

en cas appname.exe est l'application en cours. Sinon, remplacez Application.ExeName par le chemin complet de appname.exe.

+0

WS_HIDE doit être SW_HIDE. J'ai essayé de l'éditer, mais j'ai reçu le message: Les modifications doivent être au moins de 6 caractères ... – Zalumon

Questions connexes