Cómo usar SDK en la programación vb6
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();