begin process at 2008 07 04 22:51:10
1 204 970 membres
486 nouveaux aujourd'hui
14 118 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SERVICE: PAUSE/ARRÊT/FENÊTRES/TRAY ICON AVEC POPMENU


Information sur la source



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.
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

  • signaler à un administrateur
    Commentaire de Delphiprog le 16/01/2008 21:08:28 administrateur CS

    Les codes sur les services avec Delphi ne courent pas les rues. C'est avec grand intérêt que je vais me pencher sur celui-ci.
    Merci Mauricio.

  • signaler à un administrateur
    Commentaire de Michel34 le 21/01/2008 07:37:49

    Depuis le temps que je cherchais a m'instruire sur les  "services" , cela est chose faite.
    bonne continuation.

  • signaler à un administrateur
    Commentaire de MAURICIO le 21/01/2008 10:12:39

    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+

Ajouter un commentaire

Pub



Appels d'offres

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Boutique

Boutique de goodies CodeS-SourceS