Service: pause/arrêt/fenêtres/tray icon avec popmenu

Soyez le premier à donner votre avis sur cette source.

Vue 8 262 fois - Téléchargée 979 fois

Description

En complément à la seule source sur les Services du site de "Gaudetm" qui m' a beaucoup aidé à démarrer:
http://www.delphifr.com/codes/SERVICE-NT-TOUS-VOUS-DEVEZ-SAVOIR-INCLU-DOC_21678.aspx

Je vous apporte ma contribution (qui me semble être complémentaire à la source donnée plus haut) montrant:
- L' état du service (pause, running etc ...).
- L' interaction avec le service manager de Windows.
- L' utilisation de la propriété TService.Terminated

Cette source permet de convertir très facilement une appli en service!!!

Pour les cas oú vous devez choisir un UserName:
Si ServiceType = stWin32: TService.StartName peut être vide ou DomainName\Username ou .\Username (Merci GaudeTM)
N' oubliez pas la propriété Password!!!

Utilisation :
-------------

Compilez le projet.

Voici les commandes pour installer/désinstaller le service:
mon_service.exe /Install
mon_service.exe /Uninstall

Pour utiliser un fichier *.bat :
set SERVICEPATH=C:\Delphi\répertoire de mon service

rem Installer:
%SERVICEPATH%\mon_service.exe /install /silent

rem désinstaller:
%SERVICEPATH%\mon_service.exe /uninstall /silent

Note: /silent permet de ne pas avoir de message de confirmation ...

rem démarrer :
net start mon_service.exe

Démarrer le Service Manager de Windows :
%SystemRoot%\system32\services.msc /s

Très important:
---------------
Je conseille d' utiliser les services sans fenêtre.
Il vaut mieux appeler un executable pour montrer une fenêtre de configuration etc ... plutôt que d' avoir les Forms dans notre service.
Du moins, c' est ce qui me semble le plus logique et le plus utilisé, question de mémoire je suppose.

Mais dans certains cas, il est indispensable d' avoir au moins une fenêtre.
Dans ce cas, j' ai remarqué, comme tout application normale, que l' option Main Form (Menu Project puis Options sous Delphi) était disponible.
Cependant, toute TForm ajoutée au Service a la propriété visible à false, même la main form, ce que l' on comprend très bien para la nature du projet.
Par contre, si on met la propriété Visible de la main form à true et que l' on clique sur la croix pour fermer cette form, le service bloque.
(Notez aussi que fermer la main form ne veut pas dire fermer le service)

Pour éviter ce petit problème, j' ai trouvé une solution très simple, fallait juste y penser:
Je crée une main form (n' oubliez pas de passer par les options du projet), qui fait rien !!! Je laisse la propriété visible à false.
Je profite de cette form pour gérer les message qui viennent du Tray Icon afin d' avoir un squelette "Ready tu use" pour créer des services ...
Toutes les autres forms que je vais montrer pourront être fermées sans problème.

Conclusion :


J' aimerai pouvoir savoir lorsque l' on termine la session (le service cours toujours) en cours et lorsque l' on démarre un nouvelle session après avoir fermé la session en cours.
Cela permettrai un meilleur contrôle et ainsi, montrer l' icone sans utiliser le deuxieme Timer.
De plus, si on éteind le PC, Windows force la fermeture du service après quelques secondes, ce qui est intolérable dans certains cas tant que l' on a pas fini la tâche en cours.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
dimanche 5 avril 2009
Statut
Membre
Dernière intervention
23 avril 2010

merci beaucoup sur ce code.
Messages postés
1
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
16 juillet 2009

c'est un très bon code, mais j'ai remarqué que ça fonction sous windows 2000 mais pas sous windows vista!, est ce que quelqu'un a trouvé une solution à ce problème?? merci.
Messages postés
2106
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
Salut,

de rien :)

A+


Mes compos gratuits : http://sourceforge.net/projects/tcycomponents/
Messages postés
77
Date d'inscription
mercredi 15 mars 2006
Statut
Membre
Dernière intervention
22 février 2011

Hello,

Merci pour cette source, ça fait depuis des jours que je galère pour avoir un tray icon dans un service avec un menu et une fenêtre !
Messages postés
2106
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
Merci à vous deux,
ça fait plaisir de voire que ça a interessé ... 2 personnes lol
Bientôt de vais me mettre à faire un nouveau compo (dans quelques semaines) pour la synchro de fichiers, mais je n'en dis pas plus pour l' instant.
A+
Afficher les 7 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.