web-dev-qa-db-fra.com

Comment appeler CMD sans ouvrir de fenêtre

J'ai une méthode C++ (à l'aide de Visual Studio, si cela peut aider) qui appelle cmd comme ceci:

start \B example.exe arg1 arg2 arg3

Le problème est que cet appel ouvre une fenêtre (cmd). Si j'ai un autre cmd ouvert,\B fonctionne, mais sinon, il ouvre une nouvelle fenêtre.

J'ai aussi essayé sans commencer\B mais c'est la même chose ....

Je veux éviter cette nouvelle fenêtre, mais je ne sais pas comment. Une idée?

15
legami

Je ne sais pas comment le faire en C++, mais pour ouvrir une nouvelle fenêtre d'invite de commande qui est également réduite (ou "cachée") à l'aide d'un fichier de commandes que j'utiliserais:

start /min cmd

Ou si vous lancez l'invite de commande, vous pouvez taper:

@echo off
cls && start /b cmd

Ceci redémarre la fenêtre d'invite de commande actuelle sans la fermer, mais toutes les variables d'environnement définies précédemment sont réinitialisées. J'espère que cela t'aides!

(PS. Ceci a été testé et réussi sur Windows 7 Ultimate OS)

10
daniel11

Vous pouvez utiliser le commutateur "/ C"

cmd.exe /c dir/b 

cela lancera la commande "dir/b" et quittera - aucune fenêtre ne s'affichera, mais si vous souhaitez désactiver ECHO, utilisez le commutateur "/ q"

cmd.exe /c/q dir
5
Vinod Srivastav

Que diriez-vous d'utiliser WSH au lieu d'une invite CMD?

Vous pouvez utiliser le .Run, 0 pour masquer la fenêtre comme:

Set objShell = WScript.CreateObject("WScript.Shell")
isHidden = 0 'change 0 to 1 to show the CMD Prompt
objShell.Run "%comspec% /c myfile.bat", isHidden
2
Daniel Morritt

Essayez ShellExecuteEx , définissez nAfficher = SW_HIDE.

2
Leo Davidson

Appelez-le simplement sans commencer:

example.exe arg1 arg2 arg3
0