[win32 vs6] application console vs service

application console vs service [win32 vs6] - C++ - Programmation

Marsh Posté le 28-01-2003 à 14:21:38    

Bonjour,
 
sous win32, comment une application peut elle savoir si elle est lancée depuis une console ou en temps que service? J'ai commencer à explorer un peu le msdn, mais sans grand succès.
merci.

Reply

Marsh Posté le 28-01-2003 à 14:21:38   

Reply

Marsh Posté le 28-01-2003 à 15:05:51    

pourquoi aurait elle besoins de le savoir ???
 
 
deja les services n'existe que pour les os de type NT donc pas de service pour win 9X


---------------
il y a du monde sur la corde à linge
Reply

Marsh Posté le 28-01-2003 à 16:55:43    

PassPassLeOuinj a écrit :

pourquoi aurait elle besoins de le savoir ???
 
 
deja les services n'existe que pour les os de type NT donc pas de service pour win 9X


 
1. c'est bien de le savoir car:
   - si le process n'est attaché à aucune console, il n'est pas nécessaire de rediriger des flux vers la sortie standard. C4est fastidieux et surtout inutile.
   - de même, pas la peine d'attendre des informations (une confirmation, par exemple) sur l'entrée standard.
   - on peut, le cas échéant, décider de rediriger les messages importants vers l'observateur d'évènement de NT/2000.
 
2. j'avoue n'avoir pas pensé ne serait-ce qu'une seule seconde à win9x :-) c'est pour du winnt/2000.

Reply

Marsh Posté le 28-01-2003 à 18:47:29    

Tu peux peut etre te debrouiller en testant si ton handle stdin est valide. Je peux pas trop t'éclairer, car les services je connais pas.
Mais si un service ne possède pas de console alors ca doit etre jouable.
La console peut etre héritée de l'appli qui lance ton prog, le handle est passé via une structure (STARTUPINFO je crois) passe en parametre a ton appli (structure analysee par le code qui appelle WinMain)
Regarde de ce cote ainsi que du cote de GetStdHandle.
 
Apres verif c'est bien dans cette structure, champ hStdInput.
http://msdn.microsoft.com/library/ [...] fo_str.asp
 
Mais GetStdHandle(STD_INPUT_HANDLE) devrait faire l'affaire.
Si ca renvoit INVALID_HANDLE_VALUE c'est que t'es pas lancé depuis la console, sauf si Windows se charge dans ce cas de t'allouer automatiquement une console (comme pour une appli console classique). Pour les services, je sais pas comment ca se passe. Test pour savoir.
http://msdn.microsoft.com/library/ [...] handle.asp


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

Marsh Posté le 29-01-2003 à 10:50:00    

HelloWorld a écrit :

Tu peux peut etre te debrouiller en testant si ton handle stdin est valide. Je peux pas trop t'éclairer, car les services je connais pas.
Mais si un service ne possède pas de console alors ca doit etre jouable.
La console peut etre héritée de l'appli qui lance ton prog, le handle est passé via une structure (STARTUPINFO je crois) passe en parametre a ton appli (structure analysee par le code qui appelle WinMain)
Regarde de ce cote ainsi que du cote de GetStdHandle.


 
Ca fonctionne bien ainsi.
merci.

Reply

Sujets relatifs:

Leave a Replay

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