2010-07-19 2 views
0

J'ai une commande, j'ai besoin d'exécuter le même en utilisant le programme C. J'ai stocké la commande entière, avec des arguments, dans la variable cmdline. Lorsque j'utilise le système (cmdline), cela fonctionne correctement. Mais en utilisant les éléments suivants: ret = CreateProcess (NULL, cmdline, (LPSECURITY_ATTRIBUTES) NULL, (LPSECURITY_ATTRIBUTES) NULL, TRUE, NORMAL_PRIORITY_CLASS, NULL, NULL, & démarrage, & pinfo); Je reçois le code retour en tant que 2 dans GetLastError().système et CreateProcess()

Quelqu'un peut-il dire la raison? Merci d'avance.

+0

Quelle est la commande? – sharptooth

+0

Pouvez-vous publier l'intégralité du code utilisé pour CreateProcess? Il peut arriver que vous n'ayez pas remis à zéro les structures de démarrage et pinfo. –

+0

La commande est définie par l'utilisateur. En outre, j'ai mis à zéro les structures de démarrage et pinfo avant d'appeler créer le démarrage – Pradeep

Répondre

1

Peut-être que le nom du programme contient des espaces?

De MSDN: si lpApplicationName est NULL, le premier jeton espace-délimité de la ligne de commande spécifie le nom du module. Si vous utilisez un nom de fichier long qui contient un espace, utilisez des chaînes entre guillemets pour indiquer où le nom de fichier se termine et les arguments commencent.

+0

+1 Si l'OP obtient un fichier non-trouvé, c'est l'explication la plus probable. –

Questions connexes