Red de conocimiento informático - Problemas con los teléfonos móviles - Cómo usar SDK en la programación vb6

Cómo usar SDK en la programación vb6

Win32 _Battery

HRESULT hr

//1. Inicializar COM

hr = CoInitializeEx(0, COINIT _Multi-thread); >

//2. Inicializar la seguridad del proceso COM

hr = CoInitializeSecurity(

NULL, //Descriptor de seguridad

-1,/ /COM Negociar Servicio de autenticación

NULL, //Servicio de autenticación

NULL, // Reservado

RPC_C_AUTHN_LEVEL_DEFAULT, //Nivel de autenticación predeterminado para el proxy

RPC_C_IMP_LEVEL_IMPERSONATE, //El nivel de suplantación predeterminado del agente

NULL, //Información de autenticación

EOAC_NONE, //Capacidades adicionales del cliente o servidor

NULL); //Reservado

//3 Obtener el localizador inicial de WMI

//Inicializar la interfaz IWbemLocator

IWbemLocator * pLoc = 0;<. /p>

HR = cocreate instancia(CLSID_WBEM locator,0,

CLSCTX_INPROC_SERVER,IID_iwbelocator,(LPVOID *)&pLoc);

//4. en el espacio de nombres root\cimv2 en la computadora local llamando a IWbemLocator::ConnectServer.

IWbemServices * pSvc = 0;

// Utilice el usuario actual para conectarse al espacio de nombres raíz\predeterminado.

HR = pLoc->Connect Server(

_bstr_t(L"ROOT\\CIMV2 "), // Espacio de nombres WMI

NULL, / /Nombre de usuario

NULL, //Contraseña de usuario

0, //Configuración regional

NULL, //Indicador de seguridad

0, //Autoridad

0, //Objeto de contexto

& amppSvc // Proxy IWbemServices

);

cout & lt& lt "Conectar a WMI "<<endl

//5. Configure la seguridad del proxy IWbemServices para que el servicio WMI pueda hacerse pasar por el cliente llamando a CoSetProxyBlanket.

//Configura el proxy para simular el cliente.

hr = CoSetProxyBlanket(pSvc, //Indica el proxy a configurar

RPC_C_AUTHN_WINNT, // RPC_C_AUTHN_xxx

RPC_C_AUTHZ_NONE, // RPC_C_AUTHZ_xxx

NULL, //Nombre principal del servidor

RPC_C_AUTHN_LEVEL_CALL, //RPC_C_AUTHN_LEVEL_xxx

RPC_C_IMP_LEVEL_IMPERSONATE, //RPC_C_IMP_LEVEL_xxx

NULL, //ID de cliente

EOAC_NONE); //Función de proxy

//6. Utilice el puntero IWbemServices para realizar una solicitud a WMI.

IEnumWbemClassObject * pEnumerator = NULL

HR = pSvc-& gt; ExecQuery(

bstr_t("WQL "),

bstr _ t(" SELECT * FROM Win32 _ Battery "),

WBEM _ FLAG _ FORWARD _ SOLAMENTE | WBEM _ FLAG _ RETURN _ INMEDIATAMENTE,

Vacío,

& amppEnumerator);

if (fallo(hora))

{

cout & lt& lt"Error en la consulta de proceso."

< >

pLoc-> liberación();

coun inicialize();

Retorno 1;

}

Otro

{

IWbemClassObject * pclsObj

ULONG ure turn = 0;

ULONG I = 0;

mientras(significadohombre)

{

HR = pEnumerator-& gt; p>

&pclsObj & amp;uReturn);

if(0 == uReturn)

{

printf(" Fin \ n ");

Romper;

}

Variante vtProp

Registros BSTR; //LPCWSTR

if(Strname[ i][0] == "cadena ")

{

lp = (BSTR)Strname[i][1]. c _ str();

//Obtener el valor del atributo Nombre

HR = pclsObj-> Get(lp, 0 & vtProp, 0, 0); /p>

printf(Strname[i][1].c_str());

wcout & lt& lt":" & lt& ltvt prop val & lt;& ltendl< /p. >

variante clear(& vt prop);

}

Otro

{

printf(Strname [i][ 1]. c_str());

Printf(":Desconocido\n ");

}

i++;

p>

}

}

//Limpiar

// ========

pSvc- >Publicar( );

pLoc->Publicar();