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?
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)
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
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
Essayez ShellExecuteEx , définissez nAfficher = SW_HIDE.
Appelez-le simplement sans commencer:
example.exe arg1 arg2 arg3