MODÈLE DE SERVICE WINDOWS NT/2000/XP

frobinet Messages postés 64 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 15 décembre 2006 - 22 mars 2005 à 15:33
frobinet Messages postés 64 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 15 décembre 2006 - 24 mars 2005 à 10:06
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/15267-modele-de-service-windows-nt-2000-xp

frobinet Messages postés 64 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 15 décembre 2006
24 mars 2005 à 10:06
Merci !

c'est exactement ce que je cherchais, n'ayant pas de fenêtre
j'ai mis directement PeekMessage dans la boucle Thread et ça fonctionne très bien ! Une fois la synchros réalisée entre les deux je passe par WM_COPYDATA.

Encore Merci et Bonne Journée,

frobinet.
hitchhikr Messages postés 36 Date d'inscription dimanche 8 décembre 2002 Statut Membre Dernière intervention 8 avril 2005
23 mars 2005 à 14:24
Avec un service interactif on peut créer une fenêtre et recupérer les messages avec un test du genre:

if(PeekMessage(&Msg, 0, 0, 0, PM_REMOVE)) {
DispatchMessage(&Msg);
}

inséré dans la boucle principale.

Sans fenêtre on peut également utiliser le même système mais sans DispatchMessage(), en récuperant la valeur de Msg.message directement dans la boucle. Je n'ai pas essayé mais ça doit être quelque chose comme ça.

Pour copier plus de datas entre applications on peut utiliser WM_COPYDATA.
frobinet Messages postés 64 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 15 décembre 2006
23 mars 2005 à 09:41
En fait j'ai utilisé le source ci-dessus pour créer un service XP
qui lit en permanence un lecteur de carte. Il envoie via RegisterMessage... et PostMess... un message en BroadCast a tous les programmes ouvert pour dire qu'il y a une nouvelle carte d'insérer.
Et ce que je voudrai faire c'est avec un autre programme répondre au service en demandant d'autre renseignement.
Mais je ne sais pas comment faire pour récepionner un message dans un service.
hitchhikr Messages postés 36 Date d'inscription dimanche 8 décembre 2002 Statut Membre Dernière intervention 8 avril 2005
22 mars 2005 à 18:32
Je ne comprend pas bien votre question mais peut-être ceci peut vous aider:

ServiceTypeFlag dd SERVICE_WIN32_OWN_PROCESS or SERVICE_INTERACTIVE_PROCESS

SERVICE_INTERACTIVE_PROCESS permet de créer un service pouvant afficher autre chose que des boites de messages (c'est à dire des fenêtres, etc.).
frobinet Messages postés 64 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 15 décembre 2006
22 mars 2005 à 15:33
Bonjour,

Merci pour ce code qui m'est très utile !
Peut-on faire interagir un programme avec un service. Je n'arrive pas à trouver d'exemple.
Rejoignez-nous