Red de conocimiento informático - Conocimiento informático - Cómo controlar el interruptor del módulo inalámbrico de la computadora portátil a través del software

Cómo controlar el interruptor del módulo inalámbrico de la computadora portátil a través del software

Puedes controlar la desactivación de la tarjeta de red inalámbrica en el panel de control

bool CNetCardStateSet::NetCardStateChange(void * NetCardPoint, bool Enabled)

{

//------------------------------------------ -------- ----------------------------

//Función: NetCardStateChange Habilitación y deshabilitar la tarjeta de red

//Parámetro: NetCardPoint es el puntero de PNetCardStruct.

//Parámetro: Habilitado verdadero = habilitar falso = deshabilitar

//- --------- ----------------------------------------- --------- --------------

PNetCardStruct NetCard = (PNetCardStruct)NetCardPoint;

DWORD DeviceId = NetCard- >Id;

HDEVINFO hDevInfo = 0;

if (INVALID_HANDLE_VALUE == (hDevInfo =

SetupDiGetClassDevs(NULL,NULL,0,DIGCF_PRESENT|DIGCF_ALLCLASSES)) )

{

devuelve falso;

}

/*

SetupDiGetClassDevs(

(LPGUID) &GUID_DEVCLASS_NET, // GUID_DEVCLASS_NET significa enumerar solo dispositivos de red

NULL,

this->m_hWnd,

DIGCF_PRESENT

);

*/

SP_DEVINFO_DATA DeviceInfoData = {sizeof(SP_DEVINFO_DATA)};

Estado de DWORD, problema;

if (!SetupDiEnumDeviceInfo(hDevInfo,DeviceId, &DeviceInfoData)) //

return false;

if (CM_Get_DevNode_Status(&Status, &Problem,

DeviceInfoData.DevInst,0) != CR_SUCCESS) //Leer el estado de la tarjeta de red

devuelve falso;

SP_PROPCHANGE_PARAMS PropChangeParams = {sizeof(SP_CLASSINSTALL_HEADER)};

PropChangeParams.ClassInstallHeader.InstallFunc

tion = DIF_PROPERTYCHANGE;

PropChangeParams.Scope = DICS_FLAG_GLOBAL;

if (Habilitado)

{

if (!((Estado & DN_HAS_PROBLEM) && (CM_PROB_DISABLED == Problema))) //Si la tarjeta de red está habilitada, no será procesada

{

NetCard->Disabled = false;

devuelve falso;

}

PropChangeParams.StateChange = DICS_ENABLE;

}

más

{

if ((Estado & DN_HAS_PROBLEM) && (CM_PROB_DISABLED == Problema))

{

NetCard->Disabled = true;

devuelve falso;

}

if (!((Estado & DN_DISABLEABLE) && (CM_PROB_HARDWARE_DISABLED != Problema)))

devuelve falso;

PropChangeParams.StateChange = DICS_DISABLE;

}

if (!SetupDiSetClassInstallParams(hDevInfo, &DeviceInfoData,(SP_CLASSINSTALL_HEADER *)&PropChangeParams, sizeof(PropChangeParams)))

{//Función: configura la tarjeta de red para que sea válida o no válida

return false;

}

if (!SetupDiCallClassInstaller(DIF_PROPERTYCHANGE , hDevInfo, &DeviceInfoData))

{

return false;

}

if (CM_Get_DevNode_Status(&Status, &Problem,DeviceInfoData.DevInst ,0) == CR_SUCCESS )

{

NetCard->Disabled = (Estado & DN_HAS_PROBLEM) && (CM_PROB_DISABLED == Problema);

}

devuelve verdadero;

}

2

3

4

5

6

7

8

9

La estructura de los parámetros de función anteriores Cuerpo

typedef struct NetCardStruct

{

DWORD Id; // Número de dispositivo de tarjeta de red

Nombre de CString // Nombre de la tarjeta de red;

bool Disabled; // Si está actualmente deshabilitado

bool Changed // Si ha sido cambiado

} TNetCardStruct;

typedef TNetCardStruct* PNetCardStruct;

[code=C/C++]Este es un fragmento de código para habilitar y deshabilitar la tarjeta de red, puede consultar

PIP_ADAPTER_INFO pAdapterInfo=NULL;

ULONG len;

if(ERROR_SUCCESS!=GetAdaptersInfo(pAdapterInfo,&len))

{

gratis(pAdapterInfo);

pAdapterInfo=(IP_ADAPTER_INFO * )malloc(len);

}

if(ERROR_SUCCESS==GetAdaptersInfo(pAdapterInfo,&len))

{

}

DWORD dwSize=0;

MIB_IFTABLE *mit=NULL;

GetIfTable(NULL, &dwSize, verdadero) ;

mit=( MIB_IFTABLE*)new BYTE[dwSize];

if(NO_ERROR==GetIfTable(mit, &dwSize, true))

{

for(int i= 0; i<(int)mit->dwNumEntries; i++)

{

mit->table[i].dwAdminStatus= MIB_IF_ADMIN_STATUS_DOWN;

CString str (pAdapterInfo->Descripción);

CString temp(mit->table[i].bDescr);

if (str= =temp)

{

if(NO_ERROR==SetIfEntry(&mit->table[i]))

{

/ * ShowMessage("Stop Adapter("+IntToStr( mit->table[i].dwIndex)+") "

+(AnsiString)(char*)mit->table[i].bDescr+" exitoso.");*/

printf("¡Detener el adaptador exitosamente!\n");

}

}

/ / if(NO_ERROR==SetIfEntry(&mit-> tabla[i]))

// {

>

///* ShowMessage("Stop Adapter("+IntToStr(mit->table[i].dwIndex)+") "

// +(AnsiString)(char*)mit ->table[i].bDescr+" éxito.");*/

// printf("¡Detener el adaptador correctamente!\n");

// }

}

for(int i=0; i<(int)mit->dwNumEntries; i++)

{

mit->tabla [i].dwAdminStatus=MIB_IF_ADMIN_STATUS_UP;

CString str(pAdapterInfo->Descripción);

CString temp(mit->table[i].bDescr);

if (str==temp)

{

if(NO_ERROR==SetIfEntry(&mit->table[i]))

{

printf("¡Iniciar el adaptador con éxito!\n");

}

}

}

[código ]

Puedes colocar la función anterior en tu programa

De hecho, el código publicado arriba es preferiblemente parte del código en una clase de configuración de tarjeta de red que se compiló antes