IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Arrêter un service en train de tourner


Sujet :

C++Builder

  1. #1
    Membre averti
    Inscrit en
    Août 2002
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 33
    Par défaut Arrêter un service en train de tourner
    Bonjour,

    la question est dans le titre,....comment arrêter un service en train de tourner ?
    (sachant que le service est a moi...)

    Merci.

  2. #2
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Salut,
    il faut que tu utilise les méthodes suivantes (dans le bonne ordre) :

    • OpenSCManager
    • OpenService
    • ChangeServiceConfig
    • ControlService
    • CloseServiceHandle (fermeture de la connexion au service)
    • CloseServiceHandle (fermeture de la connexion au manager de service)

    ce sont des fonctions windows

  3. #3
    Membre averti
    Inscrit en
    Août 2002
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 33
    Par défaut
    Voici mon code pour arrêter le service d'aide windows de mon XP (helpsvc : il doit être présent sur tous les XP je pense....)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SC_HANDLE hSCManager;
    SC_HANDLE hServ;
    hSCManager = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
    hServ=OpenService(hSCManager,"helpsvc",SERVICE_ALL_ACCESS);
     
    if(hServ != NULL && hSCManager != NULL)
    {
       if(CloseServiceHandle(hServ) == 0)
       {
         // Erreur
         int toto = false;
       }
       CloseServiceHandle(hSCManager);
    }
    Bien sur mes 2 handles ne sont pas nul ET la fonction close ne me renvoie pas 0 !!!!!!!
    mais le service tourne toujours !!!!

  4. #4
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Il te manque l'appelle des deux méthode qui font justement ce que tu cherche, regarde ma liste de méthode dans mon précédent post, ici tu ne fait que te connecter au manager et au service et t'y déconnecter


    • OpenSCManager (connexion au gestionnaire de service)
    • OpenService (connexion au service)
    • ChangeServiceConfig
    • ControlService (demande de contrôle de service (notamment l'arrêt du service))
    • CloseServiceHandle (fermeture de la connexion au service)
    • CloseServiceHandle (fermeture de la connexion au manager de service)

  5. #5
    Membre averti
    Inscrit en
    Août 2002
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 33
    Par défaut
    Voila mon code qui marche bien, merci pour tout :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    SC_HANDLE hSCManager;
        SC_HANDLE hServ;
        SERVICE_STATUS OpenServStatus;
     
        hSCManager = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
        hServ=OpenService(hSCManager,"helpsvc",SERVICE_ALL_ACCESS);
     
        if(hServ != NULL && hSCManager != NULL)
            {
            if(ChangeServiceConfig(hServ,SERVICE_WIN32_OWN_PROCESS,SERVICE_NO_CHANGE,SERVICE_NO_CHANGE,NULL,NULL,NULL,NULL,NULL,NULL,NULL) != 0)
                {
                if(ControlService(hServ, SERVICE_CONTROL_STOP, &OpenServStatus) != 0)
                    {
                    MessageBox(NULL, "Service stoppé","Service stoppé",MB_OK);
                    }
                }
            CloseServiceHandle(hServ);
            CloseServiceHandle(hSCManager);
            }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment arrêter le service IIS sur Vista ?
    Par zanoubia_iso dans le forum IIS
    Réponses: 1
    Dernier message: 09/06/2008, 14h34
  2. arrêter un service linux
    Par Methode dans le forum Administration système
    Réponses: 6
    Dernier message: 14/02/2008, 15h11
  3. Réponses: 5
    Dernier message: 11/07/2007, 14h55
  4. Arrêter un service Windows XP et le redémarrer chaque matin
    Par beegees dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 30/09/2005, 11h25
  5. Démarrer et arrêter un service windows
    Par dvarrel dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 28/05/2005, 22h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo