IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Faire disparaître la fenêtre dos


Sujet :

C++

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 93
    Points : 53
    Points
    53
    Par défaut Faire disparaître la fenêtre dos
    Bonjour,

    Dans mon programme en C/C++, j'utilise system() me permettant de récupérer des fichiers automatiquement sur ma raspberry via ssh.
    Bref, lorsque j'utilise system(), la fenêtre DOS apparaît puis se ferme. Le problème est que j'utilise system() plusieurs fois par seconde du coup je vois tout le temps la fenêtre DOS s'ouvrir et se fermer et ça me bloque puisque la fenêtre apparaît en premier plan, donc rend inutilisable mon PC.

    Je cherche donc à ne pas faire apparaître cette fenêtre.

    Des idées ?

    Merci beaucoup

  2. #2
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Rien n'a voir avec le C ou le C++ , j'imagine que tu es sur Windows ?
    Cela dépend des options de compilation , un binaire exécutable Windows peut être entre autre en mode console ou GUI , si le binaire est en mode GUI , alors il n'ouvrira jamais la console , mais si il est en mode console il peut l'ouvrir si tu fais appel à elle ,bref ça se configure sur les options du compilateur de ton IDE

    Ah est ce n'est pas une fenêtre DOS , le DOS fait référence a un OS et la console Windows n'émule pas MS-DOS.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 93
    Points : 53
    Points
    53
    Par défaut
    Merci pour le réponse.
    Je suis bien sous Windows. Mon IDE est c++builder 4.
    Je vais approfondir mes recherches du côté des options même si pour le moment, je n'ai pas trouvé.
    Pour moi, ça peut avoir un rapport avec le C/C++ si je peux trouver autre chose que system() me permettant de faire la même chose sans les fenêtres qui s'ouvrent. Ou une fonction bloquant l'affichage.

    Et oui, pas dos mais l'invité de commande. La journée a été longue, désolé

  4. #4
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    si je peux trouver autre chose que system() me permettant de faire la même chose sans les fenêtres qui s'ouvrent.
    Regarde du coté de l'API Windows

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 069
    Points : 12 113
    Points
    12 113
    Par défaut
    La primitive "system", c'est le pire des choix sous Windows, c'est une passoire de sécurité.

    Mais l'histoire de la console n'a rien à voir avec la méthode de lancement.

    Si les programmes que vous lancez ont besoin d'une console, donnez-leur une console.

    Si c'est vous qui avez créé les programmes que vous lancez et qu'ils n'ont pas besoin d'une console, recompilez les en programme "system/windows" et pas en "system/console".

  6. #6
    Membre éprouvé
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Mai 2016
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2016
    Messages : 313
    Points : 1 237
    Points
    1 237
    Par défaut
    Sous Windows, on peut utiliser "CreateProcess" pour lancer une commande externe, et il y a bien une option pour masquer la fenêtre (ça doit être dans STARTUPINFO).
    Prévoir éventuellement une forme de synchronisation, pour attendre que le résultat soit disponible, l'appel n'est pas bloquant.
    https://docs.microsoft.com/en-us/win...createprocessa

  7. #7
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 431
    Points : 43 057
    Points
    43 057
    Par défaut
    la fonction system() va obligatoirement ouvrir une console, donc ce que tu appelles "une fenêtre DOS".

    Il faudra t'abstraire si possible de cette fonction dans ton code, car elle est très gourmande en ressources, et diffilice de gérer les erreurs retournées par celle-ci depuis ton appli.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 93
    Points : 53
    Points
    53
    Par défaut
    Merci à tous pour vos réponses.
    Merci à wolinn, j'ai trouvé la réponse en utilisant createprocess avec l'option CREATE_NO_WINDOW

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Faire disparaître une fenêtre
    Par slack457 dans le forum GTK+
    Réponses: 1
    Dernier message: 27/05/2015, 10h00
  2. Réponses: 2
    Dernier message: 13/12/2004, 15h16
  3. Réponses: 2
    Dernier message: 02/12/2004, 08h33
  4. [Plugin / Graphique] Faire apparaitre une fenêtre?
    Par relivio dans le forum Eclipse Platform
    Réponses: 7
    Dernier message: 31/03/2004, 19h10
  5. Modifier la taille de la fenêtre DOS
    Par bobgeldof7 dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 31/01/2004, 03h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo