Arreter le service 'configuration auto sans-fil' pour eviter les lags sous counter strike

Soyez le premier à donner votre avis sur cette source.

Snippet vu 16 133 fois - Téléchargée 21 fois

Contenu du snippet

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 / Exemple :


/*

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

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
5
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.
Messages postés
354
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
24 mars 2011
1
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.
Messages postés
455
Date d'inscription
mardi 24 juillet 2001
Statut
Modérateur
Dernière intervention
10 mars 2009

merci
Messages postés
1491
Date d'inscription
dimanche 19 novembre 2000
Statut
Modérateur
Dernière intervention
7 juillet 2014

A essayer lors des prochains party CS :P
Messages postés
23
Date d'inscription
samedi 2 juin 2007
Statut
Membre
Dernière intervention
11 mai 2009

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++
Afficher les 11 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.