Je débute avec un service que j'ai pas pu le démarer (startservice)

Résolu
tomylibre Messages postés 37 Date d'inscription dimanche 28 octobre 2007 Statut Membre Dernière intervention 4 juillet 2014 - 16 mars 2009 à 00:39
fbalien Messages postés 251 Date d'inscription dimanche 7 décembre 2003 Statut Membre Dernière intervention 11 novembre 2016 - 20 mars 2009 à 10:29
salut à tous, je programme un service windows avec Delphi entreprise 7 , avec un Tservice , hier g avancer un peut avec un ami dans ce forum a faire la connection au SCM et à ouvrir la connection avec mon service et à le créer , et tous ca marche bien , tous ces fonction me renvoi un nombre >0 et meme dans les service de windows , je vois mon service appelé AAAservice , mais quand je fait StartService pour le démarer , je vois qui essaye de démarre , il m'affiche démarage dans le console des service de windows mais apres se stop , voila les ligne de code que j'utilisie pour le démare :
//demarer le service
    ArrayOfArguments:=nil;
    if  StartService(Srv_Hwnd ,0,ArrayOfArguments)then
     showmessage (' démarage de service avec succe ')
     else
     showmessage (' erreur est survenu en démarage de service');
   //fin de démarage

j'attend votre aide et merci

10 réponses

tomylibre Messages postés 37 Date d'inscription dimanche 28 octobre 2007 Statut Membre Dernière intervention 4 juillet 2014
18 mars 2009 à 22:32
alooo, fbalien , bacterius , les amis, ou etes vous !!!!
3
tomylibre Messages postés 37 Date d'inscription dimanche 28 octobre 2007 Statut Membre Dernière intervention 4 juillet 2014
16 mars 2009 à 01:44
alooo, il y qq1
0
tomylibre Messages postés 37 Date d'inscription dimanche 28 octobre 2007 Statut Membre Dernière intervention 4 juillet 2014
17 mars 2009 à 19:09
prkoi il y pas de réponse, si le questtion est pas claire , je pe l'expliquer un peut .........
0
fbalien Messages postés 251 Date d'inscription dimanche 7 décembre 2003 Statut Membre Dernière intervention 11 novembre 2016
18 mars 2009 à 14:56
bonjour

le fait qu'il s'arrête juste après le démarrage peut être normal
cela dépend  de ce que fait votre service

A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tomylibre Messages postés 37 Date d'inscription dimanche 28 octobre 2007 Statut Membre Dernière intervention 4 juillet 2014
18 mars 2009 à 18:05
merci bien cher ami, mais comme c mon première essai en service windows, mon service ne fait rien , juste g fait l'étape de démarrage , puis retourner son état c tous, en démarrage je vois que le service essaye de démarrer dans la fenetre des service windows, apres certain temp il arrete, puis le code de vérifiaction d'état ecrit dans mon service me revoit qu'il est arrété ...
                     j'attend votre aide
                           Merci
0
tomylibre Messages postés 37 Date d'inscription dimanche 28 octobre 2007 Statut Membre Dernière intervention 4 juillet 2014
18 mars 2009 à 18:19
ok pur mieu expliquer voila mon simle code de service , étant donnée que le service était déja créer , et il se trouve parmi les service dans la liste des service windows ,:

procedure TAAAservice.ServiceCreate(Sender: TObject);
   var
     S : LongBool ;
     T : Cardinal ;
    Srv_Hwnd : SC_Handle;
    Srv_CtrlMngr: SC_Handle;
    Srv_State : TServiceStatus;
    //voir etat de service
     EtatDuService : word;
     //voir démarer service
      ArrayOfArguments : PChar;

    begin
     while not terminated do
     begin

                            //////////////////////
    //connection SCM windows
    Srv_CtrlMngr := OpenSCManager(nil,nil, SC_MANAGER_ALL_ACCESS);
    showmessage('connection au base SCM windows : '+inttostr(Srv_CtrlMngr));//cette fonction renvoi un nombre différent de 0 donc elle est juste

                             ///////////////////

   //Creation de service en base de SCM windows ( ensuite on va faire un test avant lui si le service existe
    (*)T:=CreateService(Srv_Ctrlmngr,PChar('AAAservice'),PChar('AAAservice'),SC_MANAGER_ALL_ACCESS,SERVICE_WIN32_OWN_PROCESS,SERVICE_AUTO_START,SERVICE_ERROR_IGNORE,PChar( 'C:\Program Files\Borland\Delphi7\Projects\anisservice1\project1.exe'),nil,nil,nil,nil,nil);
    if T>0 then
    showmessage('service crée')
    else
    showmessage('service existe ou bien un autre erreur'); (*)

                                ////////////////////////

    //ouvrir le service
     Srv_Hwnd := OpenService(Srv_CtrlMngr, PChar('AAAservice'),SERVICE_ALL_ACCESS  );
     showmessage('ouvertur d''un service : '+inttostr(Srv_Hwnd)) ;//si ca affiche un 0 donc pas juste

                              //////////////////////

    //demarer le service
    ArrayOfArguments:=nil;
     if StartService(Srv_Hwnd ,0,ArrayOfArguments)then
     showmessage (' démarage de service avec succe ')
     else
     showmessage (' erreur est survenu en démarage de service');
     //fin de démarage

                                 //////////////////////

    // etat de service

    QueryServiceStatus(Srv_Hwnd, Srv_State);
    EtatDuService:=Srv_State.dwCurrentState;

     case  EtatDuService of
      SERVICE_CONTINUE_PENDING : showmessage('1');
      SERVICE_PAUSE_PENDING : showmessage('le service est en train d''être relancé après une opération pause');
      SERVICE_PAUSED : showmessage('Le service est en pause');
      SERVICE_RUNNING : showmessage('Le service est démarré ');
      SERVICE_START_PENDING : showmessage('Le service est en cours de démarrage');
      SERVICE_STOP_PENDING : showmessage('Le service est en cours d''arrêt');
      SERVICE_STOPPED: showmessage('Le service est stoppé');

      else
      showmessage('Etat du service ne retourne rien');
      end;

   //fin d'etat de service

                               ////////////////////
//fermer les handle
        CloseServiceHandle(Srv_Hwnd);
        CloseServiceHandle(Srv_CtrlMngr);

     
    
      AAAservice.Free;
      end ;
    end;
0
tomylibre Messages postés 37 Date d'inscription dimanche 28 octobre 2007 Statut Membre Dernière intervention 4 juillet 2014
18 mars 2009 à 21:34
aloo, y pas de solution ou quoi !!!, lol
0
fbalien Messages postés 251 Date d'inscription dimanche 7 décembre 2003 Statut Membre Dernière intervention 11 novembre 2016
18 mars 2009 à 21:56
Bonjour

pour les services sous delphi cote code il doit y avoire
procedure ServiceExecute(Sender: TService);
dans cette procédure c'est là que que ce déroule le service
en géneral il y a un truc du style
  while (not Terminated)do
   .....  
si il n'y a rien c'est normal que votre service s'arrete après démarrage
il faudrait le code complet du service pour ce rendre compte
0
tomylibre Messages postés 37 Date d'inscription dimanche 28 octobre 2007 Statut Membre Dernière intervention 4 juillet 2014
18 mars 2009 à 22:01
merci bien fbalien , mais tu veut dire que je doit faire obligatoirement qq choses dans la partiton d'exécution de service , ca doit pas etre vide!!!, mais moi je veut juste pour le moment faire un démarage 100% pour mon service , le code que g donnée est un boucle infinie c juste mais juste je veut faire le démarage , je veut que mon service avoir le status démaré c tous, mais pour le moment il fait de "démarage" puij il est stopé , et le showmessage d'erreur de démarage que g fait est elle qui arrarait !!!!!
0
fbalien Messages postés 251 Date d'inscription dimanche 7 décembre 2003 Statut Membre Dernière intervention 11 novembre 2016
20 mars 2009 à 10:29
Bonjour

désolé mais je suis pas très disponible en ce moment trop de taf :-)
pose le code de ton service histoire de voir ce qui cloche

A+
0
Rejoignez-nous