2008-11-14 10 views

Répondre

12

Voici comment faire:

Shell "cmd echo foo", vbNormalFocus 
9

J'ai toujours utilisé la méthode Run de l'objet WshShell, qui est disponible après que vous faites référence au modèle d'objet Windows Script Host dans votre projet:

Dim shell As wshShell 
Dim lngReturnCode As Long 
Dim strShellCommand As String 

Set shell = New wshShell 

strShellCommand = "C:\Program Files\My Company\MyProg.exe " & _ 
    "-Ffoption -Ggoption" 

lngReturnCode = shell.Run(strShellCommand, vbNormalFocus, vbTrue) 

Vous obtenez les mêmes fonctions que L'instruction Shell normale, mais le dernier paramètre vous permet de décider si vous souhaitez exécuter le programme shell de manière synchrone. L'appel ci-dessus, avec vbTrue, est synchrone. L'utilisation de vbFalse démarre le programme de manière asynchrone. Et, comme indiqué dans les réponses précédentes, vous devez exécuter le shell de commande avec le commutateur "/ c" pour exécuter les commandes internes, comme le "echo foo" de votre question. Vous enverriez "cmd/c echo foo" à la méthode Run.

+0

lngReturnCode = shell.Run (strShellCommand, vbNormalFocus, vbTrue) – nh32rg

+0

Merci, @ nh32rg. Fixé.C'est un bug qui a vécu pendant plus de 4 ans. – JeffK

+0

Ce code est pour vbScript et non VB6 comme demandé dans la question. Cela peut être très déroutant pour quelqu'un qui ne connaît que VB6 et qui cherche des réponses aux questions VB6. – Jeff

4

une combinaison de tous

Shell Environ("COMSPEC") & " /c echo foo", vbNormalFocus 

vous devriez penser à étendre la variable d'environnement COMSPEC si vous souhaitez soutenir les systèmes antérieurs comme Windows 9x ou moi.

Vous pouvez également obtenir le numéro de processus en utilisant

pid = Shell(Environ("COMSPEC") & " /c echo foo", vbNormalFocus) 
4
Shell "cmd /c echo foo" 
-1

Utilisez uniquement des guillemets doubles: ""...""

Exemple - envoyer passe de confirmation pour faire une tâche:

shell (""echo pass|schtasks /create /TR "C:\folder\...\program.exe" /more_parameters"") 

parce que les premiers " sont fermés en "C:\... et t La chaîne s'arrêterait.


Ahora Explico en Español
Solo usa doble Comillas: ""...""

Ejemplo - par passe un mando confirmar la creacion de la tarea:

shell (""echo pass|schtasks /create /TR "C:\folder\...\program.exe" /more_parameters"") 

la Causa es que la primera Comillas " se cierra avec les comillas de la route "C:\... et se percer la chaîne de cadène.

:) Espero SIRVA y buena suerte

Questions connexes