cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 2004
-
13 mai 2004 à 21:22
chtitpierre78
Messages postés30Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention29 décembre 2008
-
2 déc. 2008 à 13:04
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
chtitpierre78
Messages postés30Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention29 décembre 2008 2 déc. 2008 à 13:04
Merci, c'est exactement ca qu'il me fallait :)
cs_Melnofil
Messages postés71Date d'inscriptiondimanche 23 juin 2002StatutMembreDernière intervention 1 février 2008 23 mai 2008 à 12:01
"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 ++
tularis
Messages postés21Date d'inscriptionmardi 8 mars 2005StatutMembreDernière intervention12 juillet 2009 13 mai 2008 à 18:49
-_-, 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 .
cs_Melnofil
Messages postés71Date d'inscriptiondimanche 23 juin 2002StatutMembreDernière intervention 1 février 2008 13 mai 2008 à 13:19
"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.
tularis
Messages postés21Date d'inscriptionmardi 8 mars 2005StatutMembreDernière intervention12 juillet 2009 10 mai 2008 à 12:18
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 ...
cs_Melnofil
Messages postés71Date d'inscriptiondimanche 23 juin 2002StatutMembreDernière intervention 1 février 2008 20 juil. 2006 à 04:47
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 ;-)
TamateaRaust
Messages postés2Date d'inscriptionlundi 10 juillet 2006StatutMembreDernière intervention13 juillet 2006 13 juil. 2006 à 13:45
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 ?
cs_Melnofil
Messages postés71Date d'inscriptiondimanche 23 juin 2002StatutMembreDernière intervention 1 février 2008 5 juin 2006 à 02:07
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.
Choumoumou
Messages postés162Date d'inscriptionjeudi 30 septembre 2004StatutMembreDernière intervention17 novembre 2010 27 avril 2006 à 23:21
Génial !
Ça m'aide énormément !
Merci pour cette source !
@+ !
Steph115
Messages postés163Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 3 février 2012 18 août 2004 à 00:34
Merci de ton aide
@++
DarkBoss
Messages postés154Date d'inscriptionsamedi 3 août 2002StatutMembreDernière intervention12 décembre 2008 17 août 2004 à 19:54
Il faut simplement que tu remplace :
ShowWindow(hConsole, SW_HIDE);
par:
ShowWindow((HWND)hConsole, SW_HIDE);
et voila ca marche now !
Steph115
Messages postés163Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 3 février 2012 23 juil. 2004 à 15:15
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.
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 13 mai 2004 à 21:30
ok
kod32
Messages postés46Date d'inscriptionmercredi 5 mai 2004StatutMembreDernière intervention13 novembre 2004 13 mai 2004 à 21:25
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...
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 13 mai 2004 à 21:22
si tu ve une appli sans fenetre, pourquoi tu fait pas une appli win32 sans créer de fenetre?
2 déc. 2008 à 13:04
23 mai 2008 à 12:01
"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 ++
13 mai 2008 à 18:49
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 .
13 mai 2008 à 13:19
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.
10 mai 2008 à 12:18
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 ...
20 juil. 2006 à 04:47
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/WindowsUserInterface/Windowing/Windows/WindowReference/WindowFunctions/ShowWindow.asp
Pratique certes mais c'est de la bidouille !
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 ;-)
13 juil. 2006 à 13:45
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 ?
5 juin 2006 à 02:07
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/freeconsole.asp
Bonne chance++
5 juin 2006 à 02:05
Utilisez plutôt la fonction FreeConsole();
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/setconsoletitle.asp
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.
27 avril 2006 à 23:21
Ça m'aide énormément !
Merci pour cette source !
@+ !
18 août 2004 à 00:34
@++
17 août 2004 à 19:54
ShowWindow(hConsole, SW_HIDE);
par:
ShowWindow((HWND)hConsole, SW_HIDE);
et voila ca marche now !
23 juil. 2004 à 15:15
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.
13 mai 2004 à 21:30
13 mai 2004 à 21:25
13 mai 2004 à 21:22