[Divers / Windows] Comment cacher la fenêtre de console ?

Comment cacher la fenêtre de console ? [Divers / Windows] - Divers - Programmation

Marsh Posté le 18-11-2011 à 12:38:24    

Bonjour...  :hello:  
Je cherche le moyen de cacher la fenêtre de console à l'exécution d'un programme qui n'en nécessite pas.
Merci pour vos réponses  :jap:


Message édité par Profil supprimé le 18-11-2011 à 13:19:00
Reply

Marsh Posté le 18-11-2011 à 12:38:24   

Reply

Marsh Posté le 18-11-2011 à 13:29:11    

http://www.codeproject.com/KB/winsdk/runsilent.aspx
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 18-11-2011 à 14:00:05    


 
Bonjour gilou ! Merci.
 
Je pige rien à l'english, j'ai regardé, peut-être trop rapidement.. La procédure décrite ici est l'écriture d'un second programme exécutant le premier sans fenêtre...Si j'ai pigé ?
 
Y pas moyen de faire ça dans mon processus directement ?
 
Merci.

Reply

Marsh Posté le 18-11-2011 à 14:43:27    

 
Le problème, c'est que tu crées pas un programme Windows directement, tu laisses le compilateur/linker faire ça pour toi (parce que ton main va être incorporé à un Winmain, etc).
Donc comme tu n'as pas de contrôle sur les paramètres de création de la fenêtre, tu es coincé.
Ou alors, il faut que tu écrives tout comme un vrai programme windows, un winmain, une classe de fenêtre, etc.
A+,
 


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 18-11-2011 à 17:07:47    

Donc, je produit bien qu'un seul exécutable ...
 
Je n'ai pas compris alors comment passer le nom ou l'adresse de mon programme.
Je vais regarder...

Reply

Marsh Posté le 18-11-2011 à 17:29:30    

Je sais pas compiler. Undefinded reference to WinMain@16
 
J'ai fait un simple gcc -o MonProg source.c

Reply

Marsh Posté le 18-11-2011 à 17:38:45    


 
Bon, vu ton niveau, je ne suis pas sûr que tu vas comprendre, mais on va essayer quand même.
 
Ce qui conditionne l'ouverture de la fenêtre DOS ou non, c'est le module de démarrage ajouté par le compilateur (enfin, l'éditeur de lien) à la création de l'exécutable. Tu peux voir ça comme un bout de code qui va initialiser 2 ou 3 trucs (genre stdin, stdout, ...), puis appeler ta fonction main() (parce que bon, ce n'est pas le système d'exploitation qui peut avoir connaissance de ce genre de chose).
 
Dans le cas de Windows, il faut changer ce module de démarrage pour éviter la création de la fenêtre DOS, ça veut dire créer son propre module de démarrage (bon courrage), ou en utiliser un déjà qui ne crée pas de fenêtre DOS, pas exemple celui utilisé pour créer un programme Windows (Dans MinGW, il me semble qu'ils sont dans \MinGW\lib\*crt*.o).
 
Avec Code::blocks + MinGW, ça se règle dans Project=>Properties=>Build targets. Si tu choisi "GUI Application", ça va utiliser le module de démarrage Windows. Petit problème toutefois: ce module va rechercher une fonction WinMain() et non main() et son prototype est légèrement différent (notamment les arguments de la ligne de commande sont sous forme d'UNE chaine de caractère). Une fois passé le point d'entré, tu n'es pas du tout obligé de faire appel à l'API windows (genre créer une fenêtre ou avoir une boucle d'événement), tu peux parfaitement te contenter d'un programme procédural.
 
 
 
 
 

Reply

Marsh Posté le 18-11-2011 à 18:09:31    

J'ai testé 4 trucs.
 
Mon programme sous ,son nom "LcdParAda" et en WinMain, comme je suis avec Ada, je ne spécifie pas le paramètre
J'ai généré un .o et un .exe, j'ai passé les deux nom comme pDefaultCMD à RunSilent.
 
Et au mieux, j'ai cette référence indéfini à WinMain@16.
Mais je cherche. enfin, je creuse.


Message édité par Profil supprimé le 18-11-2011 à 18:09:55
Reply

Marsh Posté le 18-11-2011 à 18:13:49    

tpierron, si c'est en rapport avec son écriture sur le LCD connecté au port parallèle, pour monitorer l'état de sa machine, c'est plus vers un service qu'il faudrait s'orienter, non?
Jovalise, tu veux faire quoi exactement?
A+,


Message édité par gilou le 18-11-2011 à 18:15:00

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 18-11-2011 à 18:16:41    

Je veux exécuter LcdParAda sans avoir la fenêtre que console à gérer.

Reply

Marsh Posté le 18-11-2011 à 18:16:41   

Reply

Marsh Posté le 18-11-2011 à 18:18:29    

Donc une fois lancé, tu ne pourra plus l’arrêter?
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 18-11-2011 à 18:19:38    

gilou a écrit :

Donc une fois lancé, tu ne pourra plus l’arrêter?
A+,


 
Dans le task manager non plus ?
Si non, c'est pas fait pour être arrêté.

Reply

Marsh Posté le 18-11-2011 à 18:31:17    

Bon ben au minimum, il va falloir essayer d'en faire une vraie appli windows, avec les bons paramètres:
gnatmake LcdParAda -largs -mwindows
ou quelque chose dans le genre
Si déjà tu as une vraie appli windows avec une fenêtre principale, on pourra probablement cacher cette fenêtre.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 18-11-2011 à 18:37:22    

Lutin !
 
 
 
 
Merci Gilou.
 
 
J'exécute le programme sans fenêtre juste comme ça.  :D  
 
Je vais regarder cette option de plus près.

Reply

Marsh Posté le 18-11-2011 à 18:49:19    

tpierron a écrit :


 
Bon, vu ton niveau
 


Merci quand même.

Reply

Marsh Posté le 18-11-2011 à 18:54:31    

Effet de bord pas prévu, mais si ça marche, vaut mieux pas y toucher... :D
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 18-11-2011 à 19:04:44    

gilou a écrit :

Effet de bord pas prévu,


Je me méfierait la prochaine fois. T'as trouvé comment l'option ?, je trouva rien avec Google.

gilou a écrit :


 mais si ça marche,


J'ai mis dans démarrage, j'ai rebouté, pas de fenêtre... Donc, pour moi, c'est fonctionnel.

gilou a écrit :


 vaut mieux pas y toucher... :D


Gravier si non !  :jap:  


a+


Message édité par Profil supprimé le 18-11-2011 à 19:05:53
Reply

Marsh Posté le 18-11-2011 à 19:22:00    

>> J'ai mis dans démarrage, j'ai rebouté, pas de fenêtre... Donc, pour moi, c'est fonctionnel.  
Mais tu dis pas l'essentiel: le LCD affiche les infos voulues?
Parce qui si tu as pas de fenêtre et rien sur le LCD...
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 18-11-2011 à 19:26:25    

A ben wouais quand même, j'affiche Cpu Usage, hostname date et heure sur 4 lignes. [:powa]


Message édité par Profil supprimé le 18-11-2011 à 19:38:31
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed