begin process at 2010 09 06 12:17:50
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

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

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


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Classé sous :service, cs, openscmanager, openservice, controlservice Niveau :Initié Date de création :02/06/2007 Vu :7 074

Auteur : alextm

Ecrire un message privé
Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

 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;
}



 Sources de la même categorie

Source avec Zip Source avec une capture SOUS-CLASSEMENT DE FENÊTRE D'UN AUTRE PROCESS PAR INJECTION ... par racpp
Source avec Zip Source avec une capture FENÊTRE FLOTTANTE SANS FOCUS (WIN32 API) par racpp
Source avec Zip TEMPLATES C/C++ POUR VS 2010 par BruNews
Source avec Zip Source avec une capture SERVICE WINDOWS DANS UNE DLL LANCÉ PAR SVCHOST.EXE par racpp
Source avec Zip Source avec une capture CALENDRIER (WIN64) par BruNews

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture SERVICE WINDOWS DANS UNE DLL LANCÉ PAR SVCHOST.EXE par racpp
Source avec Zip Source avec une capture GESTIONNAIRE DE SERVICES WINDOWS par draluorg
Source avec Zip WINDOWS NT SERVICES par vicenzo
Source avec Zip Source avec une capture [C/WIN32] SERVICE WIN, ÉTEINT LE PC APRÈS 1H D'INACTIVITÉ. par deck_bsd
Source avec Zip Source avec une capture [C/WIN32] DISKINFORMATIONS : AFFICHE DIVERSES INFORMATIONS S... par deck_bsd

Commentaires et avis

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...

Commentaire de alextm le 02/06/2007 21:40:24

Fais pas l'chaud jean-marie !

Commentaire de alextm le 02/06/2007 21:41:09

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

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é !

Commentaire de alextm le 02/06/2007 22:33:46

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

:p

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

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++

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

A essayer lors des prochains party CS :P

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

merci

Commentaire de darunia le 22/10/2008 17:30:48

En ce qui me concerne, ce code m'a été fort utile ... car j'ai passé l'âge de faire des horribles system("net bidule") dans mes progs Win32.

Commentaire de victorcoasne le 22/02/2009 14:29:21 10/10

Très bonne source commentée.
Très utile pour intégrer à un programme parce qu'un bat c'est toujours moche et ça s'intègre pas bien.
Et on est sûr de voir si on a une erreur en interrogeant les API Windows.
C'est juste que c'est pas pour CS que ça va me servir.

 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 2010
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
27282930   

Consulter la suite du CalendriCode

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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,655 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales