Bonjour,
la question est dans le titre,....comment arrêter un service en train de tourner ?
(sachant que le service est a moi...)
Merci.
Bonjour,
la question est dans le titre,....comment arrêter un service en train de tourner ?
(sachant que le service est a moi...)
Merci.
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
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....)
Bien sur mes 2 handles ne sont pas nul ET la fonction close ne me renvoie pas 0 !!!!!!!
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); }
mais le service tourne toujours !!!!
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)
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); }
Partager