"tu devrais avoir plus de modestie quand tu conseil" <== Ouaip, faudrait.
"car tu n'est qu'un petit programmeur" <== Ça c'est ton point de vu basé sur on se demande quoi, mais bizarrement les gens que je connais/j'ai connu IRL ont plutôt tendance à dire le contraire...
Tes deux derniers commentaires n'apportent rien à la source ci-dessus ainsi que le mien actuellement, on sort complètement du débat. Je crois que je vais arrêter les frais en ne surveillant plus cette source : Ergoter sur des trucs vieux de 2 ans c'est marrant 1 ou 2 fois...
De toutes façon, j'ai déjà expliqué en long en large et en travers pourquoi la solution proposée par Microsoft me semble nulle ; de ton coté tu n'as avancé aucun argument pour soutenir ton point de vue. Après tu fais ce que tu veux Tularis, j'oblige personne et c'est toujours bien d'avoir des choix, au cas où ça peux toujours servir un jour... À tchao ++
-_-, bon ok pour l'optimisation, mai bon l'utilisateur lambda i sen fou tant que sa marche ..., ensuite perso si je voulais faire un logiciel de clé usb jen ferai un en winapi, c'est plu simple , le truc c que la je fonction sou linux et que mon logiciel est un logiciel de sécurité par utilisateur, tu configure l'appli et op tu lance les traitements, tu cache la fenêtre.
Dernière chose , le respect et le lechbotisme sont deux choses différente, en programmation le respect c'est quelque chose que tu aperçois par une façon de programmer et une patience a aider ce qui ne comprenne pas, le lechbotisme , c'est flater par interet, hors moi jai simplement fai la remarque que tu devrai avoir plus de modestie quand tu conseil car tu n'est qu'un petit programmeur ...
derniere chose, je programme deja en .NET et c'est un langage magnifique, simplement parfois on a besoin doptimisation des traitement ...
Kan meme a ton age traiter les gens de leche bot ... sa releve de la mentalité de primaire ... surtout que lécher les botte sur un forum, faut vraiment etre seul ... ne me rabaisse pas a ton niveau .
"il y a aussi d'excellent développeur (...) comme brunews par exemple ..." <== Chercherais-tu à t'attirer les bonnes grâces de tes Dieux en leur léchant les pieds ? =^.^=
Bon trêve de plaisanterie, parlons plus sérieusement :
Imagine que ton ordinateur soit en train d'effectuer un lourd traitement dans un autre programme, la fonction GetConsoleHwnd() ci-dessus n'est pas unaire comme un write() donc la main peu très bien être rendue au système entre les deux appels à SetConsoleTitle(), ce qui fait que l'utilisateur voit passer le titre temporaire de la console. Même si le temps d'affichage bizarre n'est de l'ordre que d'un dixième de seconde, ce n'est pas le genre de truc que l'utilisateur lambda souhaite voir >_<
Ps 1 : Tularis étant donné que tu m'a l'air adepte des "techniques" de programmation Microsoft je te conseil de passer au framework .NET comme ça tu n'auras plus a utiliser ces vieilles "techniques" dans tes applications... (En tout cas pas celle mentionnée ci-dessus)
Ps 2 : Va expliquer à un g33k sous Linux que ton programme va lui masquer sa console customisée faite avec amour au démarrage, sans lui demander son avis. Un programme bien fait laisse l'ordinateur dans l'état où il l'a trouvé quand il se referme.
Toujours autant a la masse ce bon vieux melnofil ^^
Merci pour la source, même si c'est du recopier c'est toujours simpa de le mettre a dispos sur des site français ...,
Personnellement j'utilise un programme qui utilise fenetre et console, ce code m'est donc très utile ... j'aprecie l'economie de travail que tu ma fourni ...
En tous cas Melnofil je n'aurai jamais du faire de généralité sur les développeur de codes sources, en effet il y a beaucoup de code baclé ou meme pas finis, mais il y a aussi d'excellent développeur, inspire toi d'eux ... t'en a besoin ...
comme brunews par exemple ...
Déjà cette fonction est-elle bien nécessaire ?
- Soit votre programme est fait pour être lancé en mode console qui reste ouverte dans ce cas le problème ne se pose pas.
- Soit votre programme est en pur fenetré, dans ce cas là utilisez plutôt un projet Windows au lieu de DOS et il n'y aura pas de console.
- Soit votre programme est un hybride par exemple un programme en tâche de fond ou pour que le code source soit compilable avec linux/mac... seuls des cas particuliers de ce genre justifiront cette guerre contre la console.
Si vous voulez vraiment pouvoir manipuler librement une console (style pour la passer en traybar sans bidouillages ou tout simplement la rendre moins moche), il est plus souple (et pas vraiment plus compliqué) de la construire directement vous-même comme beaucoups de logiciel commerciaux le font.
L'interêt principal de l'appel à FreeConsole() dans les programmes DOS est de rendre votre application non-modale http://fr.wikipedia.org/wiki/Fen%C3%AAtre_modale . Un programme lancé en DOS bloque la session DOS tant que FreeConsole() n'est pas appelé. Après tout si votre programme n'est pas fait pour être lancé en ligne de commande vous devriez être en train d'écrire un programme Windows et non DOS.
Si vous préférez garder la console de base mais passer en non-modale, appelez successivement FreeConsole() et AllocConsole() au début du main() pour détacher le processus de la console appelante et en créer une nouvelle spécialement dédiée à cette application.
Si vous êtes joueur, sachez qu'on est cencé pouvoir faire ce qu'on veux des flux standards (les trucs qui défilent sur la console justement) par exemple à l'aide de "SetStdHandle" ( http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/setstdhandle.asp ), voir meme encore plus bourrin avec une redéfinition de macros du style :
#ifdef stderr
#undef stderr
#endif
#define stderr (...)
/* N'oubliez pas de toujours fermer les flux dans un bloc finally ou dans un destructeur d'objet */
Voilà j'espère avoir convaincu quelques personnes de ne pas utiliser GetConsoleHwnd() et d'avoir donné assez de pistes pour l'éviter plus proprement ;-)
Ce code est vraiment pratique.
Hélas une fois que la fenêtre est caché, il n'y a plus aucun moyen d'y accéder. Serait-il possible d'avoir une icone dans le systray pour afficher ou cacher la console DOS ?
Quelqu'un pourrait-il m'indiquer les modifications à apporter pour que cela soit possible ?
Ps : kod32 tu t'es gourré dans ton code, la variable "hConsole" doit être déclarée du type HWND au lieu de HANDLE et il n'est pas nécessaire de la déclarer en globale.
Salut je suis sur visual C++ 6.0 et quand je compile j'obtient ceci :
error C2664: 'ShowWindow' : cannot convert parameter 1 from 'void *' to 'struct HWND__ *'
Conversion from 'void*' to pointer to non-'void' requires an explicit cast
Merci de repondre si vous savez comment l'enlever.
parcequ'avec Dev-C++, j'ai exactement le meme prob qd je lance une commande au serveur : une fenetre console s'ouvre et se ferme. J'avais besoin d'un code explicite...
"car tu n'est qu'un petit programmeur" <== Ça c'est ton point de vu basé sur on se demande quoi, mais bizarrement les gens que je connais/j'ai connu IRL ont plutôt tendance à dire le contraire...
Tes deux derniers commentaires n'apportent rien à la source ci-dessus ainsi que le mien actuellement, on sort complètement du débat. Je crois que je vais arrêter les frais en ne surveillant plus cette source : Ergoter sur des trucs vieux de 2 ans c'est marrant 1 ou 2 fois...
De toutes façon, j'ai déjà expliqué en long en large et en travers pourquoi la solution proposée par Microsoft me semble nulle ; de ton coté tu n'as avancé aucun argument pour soutenir ton point de vue. Après tu fais ce que tu veux Tularis, j'oblige personne et c'est toujours bien d'avoir des choix, au cas où ça peux toujours servir un jour... À tchao ++
Dernière chose , le respect et le lechbotisme sont deux choses différente, en programmation le respect c'est quelque chose que tu aperçois par une façon de programmer et une patience a aider ce qui ne comprenne pas, le lechbotisme , c'est flater par interet, hors moi jai simplement fai la remarque que tu devrai avoir plus de modestie quand tu conseil car tu n'est qu'un petit programmeur ...
derniere chose, je programme deja en .NET et c'est un langage magnifique, simplement parfois on a besoin doptimisation des traitement ...
Kan meme a ton age traiter les gens de leche bot ... sa releve de la mentalité de primaire ... surtout que lécher les botte sur un forum, faut vraiment etre seul ... ne me rabaisse pas a ton niveau .
Bon trêve de plaisanterie, parlons plus sérieusement :
Imagine que ton ordinateur soit en train d'effectuer un lourd traitement dans un autre programme, la fonction GetConsoleHwnd() ci-dessus n'est pas unaire comme un write() donc la main peu très bien être rendue au système entre les deux appels à SetConsoleTitle(), ce qui fait que l'utilisateur voit passer le titre temporaire de la console. Même si le temps d'affichage bizarre n'est de l'ordre que d'un dixième de seconde, ce n'est pas le genre de truc que l'utilisateur lambda souhaite voir >_<
Ps 1 : Tularis étant donné que tu m'a l'air adepte des "techniques" de programmation Microsoft je te conseil de passer au framework .NET comme ça tu n'auras plus a utiliser ces vieilles "techniques" dans tes applications... (En tout cas pas celle mentionnée ci-dessus)
Ps 2 : Va expliquer à un g33k sous Linux que ton programme va lui masquer sa console customisée faite avec amour au démarrage, sans lui demander son avis. Un programme bien fait laisse l'ordinateur dans l'état où il l'a trouvé quand il se referme.