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 !

ARRETER LE SERVICE 'CONFIGURATION AUTO SANS-FIL' POUR EVITER LES LAGS SOUS COUNTER STRIKE


Information sur la source

Description

Voilà j'ai fait un tout pitit programme qui permet d'arreter le service "Configuration automatique sans-fil" ou le redemarrer s'il est arrêter. Pour ceux qui jouent à CS en WiFi, on est obligé tout le temps d'aller désactiver ce service dans Services donc c'est un peu la galère ! Pour ceux qui ne jouent pas à cs ça vous montre comment arrêter ou démarrer un service windows.
 

Source

  • /*
  • * cs_wifi.cpp
  • *
  • *
  • * Created by Alexandre TM on 02/06/07.
  • * Copyright 2007 . All rights reserved.
  • *
  • * Permet la desactivation/activation du service 'Configuration automatique sans-fil'
  • * Utile pour eviter les lags toutes les 30 secondes sous CS en connection wifi
  • *
  • */
  • #include <windows.h> // SC_HANDLE
  • #include <winuser.h> // MessageBox() // User32.lib
  • #include <winsvc.h> // OpenSCManager() OpenService() ControlService() // Advapi32.lib
  • // permet de suspendre le service s'il est en execution ou le relancer s'il est en pause
  • bool SwitchWifiServiceState();
  • // main()
  • int main(int argc, char* argv[])
  • {
  • if ( SwitchWifiServiceState() == false ) // si echec
  • {
  • // affiche l'erreur rencontree
  • MessageBoxA(NULL, (LPCSTR)strerror(GetLastError()), (LPCSTR)"Erreur rencontree !", MB_ICONERROR);
  • }
  • return 0;
  • }
  • // permet de suspendre le service s'il est en execution ou le relancer s'il est en pause
  • bool SwitchWifiServiceState()
  • {
  • bool flag = false;
  • // etablit une communication avec le gestionnaire de services
  • SC_HANDLE hServiceManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
  • if ( hServiceManager != NULL ) // handle valide
  • {
  • // obtient un handle sur un service existant : ici 'WZCSVC' represente 'Configuration automatique sans-fil'
  • SC_HANDLE hService = OpenServiceA( hServiceManager, (LPCSTR)"WZCSVC", SERVICE_ALL_ACCESS);
  • if ( hService != NULL ) // handle valide
  • {
  • // structure permettant de stocker les infos d'etat d'un service
  • SERVICE_STATUS_PROCESS svcStatusProc;
  • DWORD octetsNeeded;
  • // on interroger un service sur son etat
  • if ( QueryServiceStatusEx( hService, SC_STATUS_PROCESS_INFO, (LPBYTE)&svcStatusProc, sizeof(svcStatusProc), &octetsNeeded ) != 0 )
  • {
  • if ( svcStatusProc.dwCurrentState == SERVICE_STOPPED ) // si le service est suspendu
  • {
  • if ( StartServiceA( hService, NULL, NULL ) != 0 )
  • flag = true;
  • }
  • else if ( svcStatusProc.dwCurrentState == SERVICE_RUNNING ) // si le service tourne
  • {
  • SERVICE_STATUS svcStatus;
  • if ( ControlService( hService, SERVICE_CONTROL_STOP, &svcStatus ) != 0 ) // on le suspend
  • flag = true;
  • }
  • }
  • CloseServiceHandle(hService);
  • }
  • CloseServiceHandle(hServiceManager);
  • }
  • // true si ok : false si ko
  • return flag;
  • }
/*
 *  cs_wifi.cpp
 *  
 *
 *  Created by Alexandre TM on 02/06/07.
 *  Copyright 2007 . All rights reserved.
 *
 *  Permet la desactivation/activation du service 'Configuration automatique sans-fil'
 *  Utile pour eviter les lags toutes les 30 secondes sous CS en connection wifi
 *
 */


#include <windows.h>  // SC_HANDLE
#include <winuser.h>  // MessageBox() // User32.lib
#include <winsvc.h>   // OpenSCManager() OpenService() ControlService() // Advapi32.lib

// permet de suspendre le service s'il est en execution ou le relancer s'il est en pause
bool SwitchWifiServiceState();

// main()
int main(int argc, char* argv[])
{
	if ( SwitchWifiServiceState() == false ) // si echec
	{
		// affiche l'erreur rencontree
		MessageBoxA(NULL, (LPCSTR)strerror(GetLastError()), (LPCSTR)"Erreur rencontree !", MB_ICONERROR);
	}	
	
	return 0;
}


// permet de suspendre le service s'il est en execution ou le relancer s'il est en pause
bool SwitchWifiServiceState()
{
	bool flag = false;

	// etablit une communication avec le gestionnaire de services
	SC_HANDLE hServiceManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); 
	if ( hServiceManager != NULL ) // handle valide
	{
		// obtient un handle sur un service existant : ici 'WZCSVC' represente 'Configuration automatique sans-fil'
		SC_HANDLE hService = OpenServiceA( hServiceManager, (LPCSTR)"WZCSVC", SERVICE_ALL_ACCESS);
		if ( hService != NULL ) // handle valide
		{
			// structure permettant de stocker les infos d'etat d'un service
			SERVICE_STATUS_PROCESS svcStatusProc;
			
			DWORD octetsNeeded;
			// on interroger un service sur son etat
			if ( QueryServiceStatusEx( hService, SC_STATUS_PROCESS_INFO, (LPBYTE)&svcStatusProc, sizeof(svcStatusProc), &octetsNeeded ) != 0 )
			{
				if ( svcStatusProc.dwCurrentState == SERVICE_STOPPED ) // si le service est suspendu
				{
					if ( StartServiceA( hService, NULL, NULL ) != 0 )
						flag = true;
				}			
				else if ( svcStatusProc.dwCurrentState == SERVICE_RUNNING ) // si le service tourne
				{
					SERVICE_STATUS svcStatus;
					if ( ControlService( hService, SERVICE_CONTROL_STOP, &svcStatus ) != 0 ) // on le suspend
						flag = true;
				}
			}
			CloseServiceHandle(hService);
		}
		CloseServiceHandle(hServiceManager);
	}

	// true si ok : false si ko
	return flag;
}

Commentaires et avis

signaler à un administrateur
Commentaire de vicenzo le 02/06/2007 20:28:17

Si l'objectif consiste seulement à lancer/arrêter un service, une simple command shell suffit :

net start/stop WZCSVC

Si l'object est de monter l'API des services de Windows, c'est un peu light comme code...

signaler à un administrateur
Commentaire de alextm le 02/06/2007 21:40:24

Fais pas l'chaud jean-marie !

signaler à un administrateur
Commentaire de alextm le 02/06/2007 21:41:09

Si tu as 10 services à stopper tu fais 10 net stop ?

signaler à un administrateur
Commentaire de vicenzo le 02/06/2007 22:27:48

1/ Si tu pense être dieu, être parfait et ne pas pouvoir accepter de simple remarques, faut pas poster du code sur des forums.

2/ Tes 73 lignes de codes se resume à un ligne avec la commande net. Maintenant, réinventer la roue chaque matin, j'ai passé l'âge !

3/ Que j'ai 1, 50 ou 1000 net stop/start à faire, j'ai un fichier avec la liste des services et un script qui prend ce fichier en param, boucle sur chaque ligne du fichier et fais l'action correspondante... Plus simple à faire, plus rapide à faire et sans compilation....

4/ Humilité !

signaler à un administrateur
Commentaire de alextm le 02/06/2007 22:33:46

je ne suis pas Dieu, seulement Jesus, on m'appelle Jesus II.

:p

signaler à un administrateur
Commentaire de DelphiCool le 03/06/2007 12:42:53 administrateur CS

Salut,

je vais etre un peu hors champs

Quelqu'un sais comment mettre le type de démmarrage en automatique.

Sois par le code, sois par commande

Merci

signaler à un administrateur
Commentaire de alextm le 03/06/2007 16:42:59

Par le code, tu peux utiliser la fonction de l'API qui s'appelle ChangeServiceConfig() , le type de démarrage est passé à cette fonction par le 3 eme paramètre dwStartType ! Mais el mieux est que tu ailles lire un peu la msdn à ce sujet : http://msdn2.microsoft.com/en-us/library/ms681987.aspx

ciao++

signaler à un administrateur
Commentaire de max12 le 04/06/2007 14:40:07 administrateur CS

A essayer lors des prochains party CS :P

signaler à un administrateur
Commentaire de DelphiCool le 04/06/2007 20:23:26 administrateur CS

merci

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Creer un service sous NT ou win2000 [ par waxman ] Bonjour, je cherche desesperement comment creer un service sous nt ou 2000. J'ai deja developpé mon appli mais je n'arrive pas à la declarer en tant q Creer un service sous NT ou win2000 [ par waxman ] Bonjour, je cherche desesperement comment creer un service sous nt ou 2000. J'ai deja developpé mon appli mais je n'arrive pas à la declarer en tant q Creer un service sous NT ou win2000 [ par waxman ] Bonjour, je cherche desesperement comment creer un service sous nt ou 2000. J'ai deja developpé mon appli mais je n'arrive pas à la declarer en tant q Creer un service sous NT ou win2000 [ par waxman ] Bonjour, je cherche desesperement comment creer un service sous nt ou 2000. J'ai deja developpé mon appli mais je n'arrive pas à la declarer en tant q coder un service sous win 2000 [ par Sylfeline ] J'essaye de coder un service sous win 2000.J'ai trouvé un example ici http://www.muukka.net/programming/service.html- je tape en ligne de commande mon passer un programme en "windows service" cbuilder [ par Sloft ] Comment faire pour faire passer un programme en "windows service" sous c++builder 5, merci ! démarrer/arréter un service [ par hanafi ] bonjourj'ai un probleme (Urgent)je veux crier une application qui me permi de démarrer ou arréter un service (Win NT ,panneau de configration,Services créer,démarrer et arréter un service [ par hanafi ] Bonjourje veux créer un programme qui me pérmet de créér,démarrer et arréter un service automatiquement (Win NT,panneau de configuration ,services)Mer service NT ou 2000 [ par arofred ] Bonjour,J'ai un service nt écrit en visual C++ version 6.0,ce service est lié a un fichier .INI qui ce trouve dans c:\winnt\system32.Je voudrais pouvo service windows [ par lysane ] j'ai crée un exe qui doit tourner en permanance sur une machine , on m'a conseillé de la déclarer comme service windows mais je ne sais pas comment fa


Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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,52 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é.