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

Catégorie :Système Classé sous : WIN NT, service, TService, tray Niveau : Initié Date de création : 14/01/2008 Vu / téléchargé: 3 952 / 401

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note


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.

 

Fichier Zip

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

Commentaires et avis

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+

signaler à un administrateur
Commentaire de madcap le 03/06/2009 16:53:33

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 !

signaler à un administrateur
Commentaire de MAURICIO le 03/06/2009 17:42:30

Salut,

de rien :)

A+


Mes compos gratuits : http://sourceforge.net/projects/tcycomponents/

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Accèder à une ressource réseau via un TService [ par informia ] Bonjour,Voila, je viens de développer un service windows dans lequel j'aimerais accéder à une ressource réseau (base de donné Démarrage/Arrêt d'un service [ par kinay ] Comment démarrer ou arrêter un service à partir d'une application Delphi ? Service Pack [ par kinay ] Comment connaitre le service Pack de Windows ? Verifier le lancement d'un service à distance [ par abdouinf ] Bonjour à tous,je suis en train de developper une application Client/Serveur avec TSocketConnection, j'ai un service qui tourne sur le serveur po prob d'impression dans un service web [ par jeremydem ] je programme en delphi 8 et je voudrais imprimer a partir d'un service web.j'utilise le composant prindocument, au moment du print j'ai toujours le m& Installation d'un service [ par gastou ] Bonsoir, je voudrais installer un service qui a en entrée un fichier ini. donc mon service : ServiceEmule.exemon raccourci d'install qui cible m Service Windows et application Java [ par davidfdm2002 ] Je souhaite réalisé un service Windows mepermettant de lancer une application java (un serveur Web) au demarrage du Systeme .( NT/2000 serve Gérer mon service [ par lbensch ] J'ai développé un service, ensuite je veux développer une application qui gèrera ce service :   - Propriét&#23 Service et programme attaché au service. [ par davidfdm2002 ] Bonjour,Voici un grand mystere, une enigme, une chose incroyable que vous ne verrez qu'une fois...j'espere.Voici la question pour un champion :J'ai cr Envoyer un message a un service [ par cricri_b34 ] j'ai créer un dll qui est supposé de communiquer avec un Service en lui envoyant un message je dois pour ca transmettre le handle du service


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,406 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.