Je débute avec une création d'un service [Résolu]

tomylibre 36 Messages postés dimanche 28 octobre 2007Date d'inscription 4 juillet 2014 Dernière intervention - 14 mars 2009 à 15:43 - Dernière réponse :  Cirec
- 16 mars 2009 à 07:59
salut à tous, je vais poser ce question car g pas trouver vraimant une solution précise sur mon probleme, bon, je débute avec un service qui fait comme première étapes une connection à un BD mysql distant, et ca marché la connection , mais je veut faire un menu qui aide l'utilisateur de mon service à démarer, arreter , ou suspendre ce service , avec un icon de notification (tray icon), lorsque on clique au dessu un menu s'affiche ayyant les options : start , stop , pause. mes deux probleme c que je ne sais pas comment arreter mon service ou bien le suspendre , 2ement , j'ai pas trouver comment faire le "tray icon" , j'ai developper avec le VB ca été facile de le faire .
 j'attend votre aide , et merci d'avance .
Afficher la suite 

Votre réponse

46 réponses

Meilleure réponse
tomylibre 36 Messages postés dimanche 28 octobre 2007Date d'inscription 4 juillet 2014 Dernière intervention - 14 mars 2009 à 17:53
3
Merci
merci bien cher ami , wi je parle d'un service windows que je devais le crée ,mais je trouve pas de help pour le mot "winsvc" alors sache vous un emplacement ou je trouve une réponse,
                         encore merci cher ami

Merci tomylibre 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 124 internautes ce mois-ci

Commenter la réponse de tomylibre
Meilleure réponse
Bacterius 3869 Messages postés samedi 22 décembre 2007Date d'inscription 3 juin 2016 Dernière intervention - 14 mars 2009 à 18:01
3
Merci
Ajoute WinSvc dans ta clause unité :

uses Windows, Sysutils, Messages, Classes, ... , WinSvc;

Et ensuite, double-clique sur ta fiche, et écris "WinSvc.", puis attends un peu pour voir le contenu de l'unité. A partir de là tu auras plein de fonctions pour gérer les services Windows et même en créer un !
Et puis va sur MSDN pour te renseigner sur les fonctions ce ne sont pas les plus simples API ...

procedure TForm1.FormCreate(Sender: TObject);
begin
WinSvc.
end;

Merci Bacterius 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 124 internautes ce mois-ci

Commenter la réponse de Bacterius
Meilleure réponse
tomylibre 36 Messages postés dimanche 28 octobre 2007Date d'inscription 4 juillet 2014 Dernière intervention - 14 mars 2009 à 18:15
3
Merci
merci bien à vous , je vais tester et voir ,
                                         merci bien , a+

Merci tomylibre 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 124 internautes ce mois-ci

Commenter la réponse de tomylibre
Meilleure réponse
tomylibre 36 Messages postés dimanche 28 octobre 2007Date d'inscription 4 juillet 2014 Dernière intervention - 14 mars 2009 à 18:20
3
Merci
désolé , mais j'arrive pas à gérer mon service , pour expliquer j'ai fait un autre service , je clique au dessu et j'ajout winsvc dans uses , et puis, qui peut me donner quelque instructions pour arreter ce service que g créer mainant ,
                                                      Merci

Merci tomylibre 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 124 internautes ce mois-ci

Commenter la réponse de tomylibre
Meilleure réponse
tomylibre 36 Messages postés dimanche 28 octobre 2007Date d'inscription 4 juillet 2014 Dernière intervention - 14 mars 2009 à 18:29
3
Merci
en faite , je vais vous donner un ptit travaille que g fait , alors dis moi si je suis en bon chemin (mon service appelé "service1") mon service doit s'arreter avant d'afficher le dernier Message:

procedure TService1.ServiceCreate(Sender: TObject);

   var

    Srv_Hwnd : SC_Handle;

    Srv_CtrlMngr: SC_Handle;

    Srv_State : TServiceStatus;

    begin


    showmessage('le service démarre');


    winsvc.SERVICE_CONTROL_STOP ;

    //parti pour arreter le service


    Srv_CtrlMngr := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);

    showmessage(inttostr(Srv_CtrlMngr));//cette fonction renvoi un nombre différent de 0 donc elle est juste


    Srv_Hwnd := OpenService(Srv_CtrlMngr, PChar('service1'), SERVICE_ALL_ACCESS);

    showmessage(inttostr(Srv_Hwnd)) ;//ca affiche un 0


    if ControlService(Srv_Hwnd, SERVICE_CONTROL_SHUTDOWN, Srv_State)then

     showmessage('controlservice est true')

      else

       showmessage('controlservice est true');


       CloseServiceHandle(Srv_Hwnd);

       CloseServiceHandle(Srv_CtrlMngr);


    //maintenant le service doit s'arreter et n'affiche pas le message qui suit


    showmessage('le service est toujours en marche');


    end;

Merci tomylibre 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 124 internautes ce mois-ci

Commenter la réponse de tomylibre
Bacterius 3869 Messages postés samedi 22 décembre 2007Date d'inscription 3 juin 2016 Dernière intervention - 14 mars 2009 à 16:57
0
Merci
Tu parles d'un service.
Tu entends par là un service Windows ? Dans ce cas-là regarde l'unité WinSvc, il y a tout ce qu'il faut.

Cordialement, Bacterius !
Commenter la réponse de Bacterius
cs_rt15 3982 Messages postés mardi 8 mars 2005Date d'inscription 7 novembre 2014 Dernière intervention - 14 mars 2009 à 18:02
0
Merci
Salut,

Pour les icônes dans la barre des tâches tu peux regarder ce source par exemple.

Pour l'unité WinSvc proposée par Bacterius, tu peux la trouver dans quelque chose comme C:\Program Files\Borland\Delphi6\Source\Rtl\Win\WinSvc.pas.

Tu peux utiliser cette unité en l'incluant dans les uses de ton projet.

Tu peux trouver de l'aide pour les fonctions de cette unité dans la msdn ici.
Commenter la réponse de cs_rt15
Bacterius 3869 Messages postés samedi 22 décembre 2007Date d'inscription 3 juin 2016 Dernière intervention - 14 mars 2009 à 18:09
0
Merci
Oui, sinon j'avais vu une unité "SvcMgr", mais je n'arrive plus à l'utiliser, je crois qu'elle gère les applications services (une TApplication mais qui te fait démarrer directement en mode service, sans que tu aies à t'en préoccuper).

Cordialement, Bacterius !
Commenter la réponse de Bacterius
Bacterius 3869 Messages postés samedi 22 décembre 2007Date d'inscription 3 juin 2016 Dernière intervention - 14 mars 2009 à 18:22
0
Merci
Montre ton code ...

Cordialement, Bacterius !
Commenter la réponse de Bacterius
Bacterius 3869 Messages postés samedi 22 décembre 2007Date d'inscription 3 juin 2016 Dernière intervention - 14 mars 2009 à 18:32
0
Merci
Tu pouvais pas écrire plus petit ?

Concernant le code (met ses lorgnettes), si ton service "Service1" n'est pas créé, ça ne marchera pas.

Utilise CreateService.
Et ensuite ça marchera peut-être :/

Cordialement, Bacterius !
Commenter la réponse de Bacterius
tomylibre 36 Messages postés dimanche 28 octobre 2007Date d'inscription 4 juillet 2014 Dernière intervention - 14 mars 2009 à 18:51
0
Merci
merci bacterius , mais lorsque je fait run pour mon service dans le programme delphi , cela ne ve pas dire que mon service est crée et en marche ??
(dsl pour la police de mon code , lol)
Commenter la réponse de tomylibre
Bacterius 3869 Messages postés samedi 22 décembre 2007Date d'inscription 3 juin 2016 Dernière intervention - 14 mars 2009 à 18:57
0
Merci
Tu veux parler de Application.Run ?
Non, ceci déclenche uniquement le début de la boucle principale d'application.

Je t'explique en gros le principe des services Windows.
Il existe dans Windows un SCM (Service Control Manager), qui gère tous les services Windows.
Or, pour qu'une application soit considérée comme service, il faut qu'elle s'inscrive dans ce SCM. Après, elle est tranquille et peut effectuer ses opérations (sauf au début, ou c'est très délicat).

CreateService inscrit un service dans le SCM, et te permet de le paramétrer rapidement sans avoir à passer par les fonctions de paramètrage dédiées. C'est pourquoi il a autant de paramètres (mais ils sont simples, il ne faut pas être dérouté).

Cordialement, Bacterius !
Commenter la réponse de Bacterius
tomylibre 36 Messages postés dimanche 28 octobre 2007Date d'inscription 4 juillet 2014 Dernière intervention - 14 mars 2009 à 19:18
0
Merci
merci bien ami, les choses sont plus claire mainant , alors peut tu me donner le syntaxe de Createservice et comment je l'utilise ....
Commenter la réponse de tomylibre
Bacterius 3869 Messages postés samedi 22 décembre 2007Date d'inscription 3 juin 2016 Dernière intervention - 14 mars 2009 à 19:24
0
Merci
Rrah ... tu sais les paramètres sont affichés dans une bulle d'aide. De mémoire je ne pourrai pas te donner la syntaxe, mais tu peux chercher sur internet : regarde :

http://msdn.microsoft.com/en-us/library/ms682450(VS.85).aspx

Cordialement, Bacterius !
Commenter la réponse de Bacterius
tomylibre 36 Messages postés dimanche 28 octobre 2007Date d'inscription 4 juillet 2014 Dernière intervention - 14 mars 2009 à 19:37
0
Merci
merci bien bacterius , je vais le voir.
Commenter la réponse de tomylibre
tomylibre 36 Messages postés dimanche 28 octobre 2007Date d'inscription 4 juillet 2014 Dernière intervention - 14 mars 2009 à 19:48
0
Merci
mais svp les fonction "OpenSCManager" et  "OpenService" et "ControlService" , c quoi sont role ?
Commenter la réponse de tomylibre
Bacterius 3869 Messages postés samedi 22 décembre 2007Date d'inscription 3 juin 2016 Dernière intervention - 14 mars 2009 à 19:54
0
Merci
- OpenSCManager est très important, il permet d'établir la connexion avec le SCM. Il te suffit de spécifier une machine (nil si machine locale), un SCM (nil pour celui par défaut) et un type d'accès désiré (SC_MANAGER_ALL_ACCESS pour tous les droits). Il te renverra 0 si la fonction a foiré (dans ce cas ça ne sert plus à rien de continuer) ou le handle du SCM (tu devras t'en servir pour toutes les autres fonctions, donc garde-le dans une variable globale).

- OpenService permet d'établir la connexion avec un service enregistré dans un SCM défini par le handle de SCM que tu files à la fonction. Tu dois aussi spécifier le nom du service, et la fonction te renvoie le handle du service.

- ControlService envoie une commande à un service, donc le handle a été préalablement récupéré par CreateService ou OpenService.

C'est comme ça que je conçois les choses ...

Cordialement, Bacterius !
Commenter la réponse de Bacterius
tomylibre 36 Messages postés dimanche 28 octobre 2007Date d'inscription 4 juillet 2014 Dernière intervention - 14 mars 2009 à 20:02
0
Merci
merci cher ami c tres intérréssant , ce soir beaucoup c claireté et c grace à vous , merci bien .
Commenter la réponse de tomylibre
tomylibre 36 Messages postés dimanche 28 octobre 2007Date d'inscription 4 juillet 2014 Dernière intervention - 14 mars 2009 à 20:09
0
Merci
J'ai trouvé beaucoup de paramètre pour la fonction CreateService , esque je doit les citer tous ou bien qq 1 car vraimant c une liste de paramètre que je croit pas que les develeppeur vont les citer tous pour créer un service non?
Commenter la réponse de tomylibre
tomylibre 36 Messages postés dimanche 28 octobre 2007Date d'inscription 4 juillet 2014 Dernière intervention - 14 mars 2009 à 20:12
0
Merci
j'ai trouvé dans un site un createservice avec ces paramètre ,mais g pas compri 2 pramaètres "libelle" et un paramètre il a nommé "chemin" , et bain la voila tous :

<li>CreateService( H_SC,
</li><li> PChar( SrvName ),
</li><li> PChar( Libelle ),
</li><li> SC_MANAGER_ALL_ACCESS,
</li><li> SERVICE_WIN32_OWN_PROCESS,
</li><li> SERVICE_AUTO_START,
</li><li> SERVICE_ERROR_IGNORE,
</li><li> PChar( Chemin ),
</li><li>nil,
</li><li>nil,
</li><li>nil,
</li><li>nil,
</li><li>nil );
</li>
Commenter la réponse de tomylibre

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.

je débute avec une création d'un service - page 2