Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide Recherche
935 connectés 

  FORUM HardWare.fr
  Programmation
  C

  programme en tache de fond

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

programme en tache de fond

n°928464
maerlin666
Posté le 20-12-2004 à 18:41:28  profilanswer
 

salut,
Je voudrais simplement savoir comment faire pour qu'une application se lance en tache de fond en C.
C'est a dire pour qu'aucune fenetre n'apparaisse a l'ecran.
Par exemple pour réaliser un serveur qui fonctionne en permanence sans gener le bureau
 
Merci

mood
Publicité
Posté le 20-12-2004 à 18:41:28  profilanswer
 

n°928503
Emmanuel D​elahaye
C is a sharp tool
Posté le 20-12-2004 à 19:47:27  profilanswer
 

maerlin666 a écrit :

salut,
Je voudrais simplement savoir comment faire pour qu'une application se lance en tache de fond en C.
C'est a dire pour qu'aucune fenetre n'apparaisse a l'ecran.
Par exemple pour réaliser un serveur qui fonctionne en permanence sans gener le bureau


Ca dépend du système. Quel système ?


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°928509
maerlin666
Posté le 20-12-2004 à 20:00:12  profilanswer
 

c'est sous windows
J'ai echangé borland 5.5 pour dev cpp
avec borland un programme WINAPI winMain ne lance pas de fenetre en fond  
tandis qu'avec devcpp une fenetre style dos apparait avec le programme
si je fais un programme qui affiche un MessageBox()
avec dev cpp j'obtien le message box + une fentre noire en fond
d'ou provient la difference

n°928514
Harkonnen
Modérateur
SQL is evil
Posté le 20-12-2004 à 20:05:18  profilanswer
 

ce que tu appelles des programmes "WINAPI WinMain" sont des programmes destinés à afficher une fenêtre (si tu créé une classe de fenêtre). si tu n'as pas créé de classe de fenetre et que tu ne l'as pas registrée, tu n'auras pas de fenêtres.
sous DevCPP, tu as du créer un programme en ligne de commande, donc qui se lance via une fenêtre de commandes.
si tu veux faire un serveur qui tourne en tache de fond sous XP, le mieux est de faire un service. pour les autres Windows (98/ME), tu dois créer une fenêtre que tu n'afficheras pas via par exemple ShowWindow(SW_HIDE)


---------------
J'ai un string dans l'array (Paris Hilton) - lesblasblasdemma : Ecrire comme d'autres respirent
n°928518
Emmanuel D​elahaye
C is a sharp tool
Posté le 20-12-2004 à 20:06:31  profilanswer
 

maerlin666 a écrit :

c'est sous windows
J'ai echangé borland 5.5 pour dev cpp
avec borland un programme WINAPI winMain ne lance pas de fenetre en fond  
tandis qu'avec devcpp une fenetre style dos apparait avec le programme
si je fais un programme qui affiche un MessageBox()
avec dev cpp j'obtien le message box + une fentre noire en fond
d'ou provient la difference


Il faut faire une application 'GUI' sans fenêtre et non une application 'console'.
 
Mais je ne suis pas spécialiste de Windows. Il existe des forums spécialisés pour ça. Ici, c'est plutôt le C général et orienté matériel...
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°928574
leneuf22
Posté le 20-12-2004 à 21:04:40  profilanswer
 

Autre méthode :
Tu fais un programme console, et tu mets l'offset 0xDC à 02 au lieu de 03, et t'auras plus de console.
 
(je signale juste l'astuce comme ça hein, c'est pas la meilleure façon)


Message édité par leneuf22 le 20-12-2004 à 21:06:34
n°930122
maerlin666
Posté le 22-12-2004 à 16:05:45  profilanswer
 

ok merci,
effectivement j'avais créé un projet en mode console
Apres l'avoir transposé en mode GUI la fenetre a disparu pour la plupart des programmes mais quand je tente de faire un serveur elle revient ...
 
leneuf22 interessant ton astuce pour le mode console
peut tu me dire comment ca marche, ca touche au lancement meme de la fenetre ?


Message édité par maerlin666 le 22-12-2004 à 16:06:03
n°930155
leneuf22
Posté le 22-12-2004 à 16:44:43  profilanswer
 

L'octet 0xDC correspond au champ Subsystem de la structure IMAGE_OPTIONAL_HEADER de ton exécutable
 
La valeur 3 correspond à IMAGE_SUBSYSTEM_WINDOWS_CUI
La valeur 2 correspond à IMAGE_SUBSYSTEM_WINDOWS_GUI
Tout ceci étant défini dans winnt.h
 
 
Plus d'informations dans la MSDN :
 
http://msdn.microsoft.com/library/ [...] er_str.asp


Message édité par leneuf22 le 22-12-2004 à 16:48:20
n°930173
HelloWorld
Salut tout le monde!
Posté le 22-12-2004 à 17:14:21  profilanswer
 

Changer l'option dans le projet c'est un peu plus simple... Surtout que l'optionnal header n'est pas forcément toujours au même endroit. Faut se baser sur le champ e_lfanew du DOS header.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°930505
leneuf22
Posté le 22-12-2004 à 21:42:24  profilanswer
 

C'est vrai (mais au passage, jusqu'à maintenant je n'ai vu aucun compilo se comporter autrement)
 
En tous cas je suis tout à fait d'accord, en en plus cette méthode elle est pas bien : c'est plus du bidouillage qu'autre chose.

mood
Publicité
Posté le 22-12-2004 à 21:42:24  profilanswer
 

n°930514
Carbon_14
Posté le 22-12-2004 à 21:54:29  profilanswer
 

En mettant la feuille de l'application en "invisible" (ShowWindow())?  
Ou de taille zéro (en hauteur et largeur) mais  pas sûr autorisé ?

n°930632
HelloWorld
Salut tout le monde!
Posté le 23-12-2004 à 01:29:31  profilanswer
 

Ben a partir de VC++7, ça se change à la volée dans les settings de ton compilo (Linker->SUBSYSTEM).


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  programme en tache de fond

 

Sujets relatifs
débutant c++ gtk cherche aide pour petit programmeSavoir en quel langage a ete programme un logiciel...
[C++] Migrer un programme VB vers VC++executer un programme sur le serveur
Contrôle de l'exécution d'un programmeLire des données dans un programme (simulateur)
[CSS] Changement d'image de fond de cellule avec une css ?Programme qui resiste a un formatage
[Windows] Comment lancer un programme en tache de fond ? RESOLULancer un programme en tache de fond ?
Plus de sujets relatifs à : programme en tache de fond



Copyright © 1997-2014 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC