очень нужны сэмплы с использованием WMI
От: 3pac  
Дата: 22.04.04 16:09
Оценка:
чтобы они что нибудь детектили, желательно, какую нить виндовскую инфу. Курсовик(что то типа SYSINFO), и надо запостить сабж- удивить препода. Разбираться времени нет. Дайте плиз, если есть.
Re: очень нужны сэмплы с использованием WMI
От: Аноним  
Дата: 26.04.04 09:08
Оценка:
Здравствуйте, 3pac, Вы писали:

3>чтобы они что нибудь детектили, желательно, какую нить виндовскую инфу. Курсовик(что то типа SYSINFO), и надо запостить сабж- удивить препода. Разбираться времени нет. Дайте плиз, если есть.


HRESULT hRes;
IWbemLocator *pLoc = 0;
IWbemServices *pSvc = 0;
IWbemClassObject *obj = 0;





hRes = CoInitializeEx(0, COINIT_MULTITHREADED);

if(FAILED(hRes))
{
return -1;
}

hRes = CoInitializeSecurity(NULL,-1,NULL,NULL,
RPC_C_AUTHN_LEVEL_DEFAULT,
RPC_C_IMP_LEVEL_IMPERSONATE,
NULL,
EOAC_NONE,
NULL);
if(FAILED(hRes))
{
CoUninitialize();
return -1;
}


hRes = CoCreateInstance(CLSID_WbemLocator,
0,
CLSCTX_INPROC_SERVER,
IID_IWbemLocator,
(LPVOID *) &pLoc);

if(FAILED(hRes))
{
CoUninitialize();
return -1;
}


BSTR serverPath = SysAllocString(L"root\\CIMV2");

// Connectingn to the WMI
hRes = pLoc->ConnectServer( serverPath,
NULL,
NULL,
0,
NULL,
0,
0,
&pSvc);

SysFreeString(serverPath);

if(FAILED(hRes))
{
CoUninitialize();
return -1;
}



hRes = CoSetProxyBlanket(pSvc,
RPC_C_AUTHN_WINNT,
RPC_C_AUTHZ_NONE,
NULL,
RPC_C_AUTHN_LEVEL_CALL,
RPC_C_IMP_LEVEL_IMPERSONATE,
NULL,
EOAC_NONE );

if(FAILED(hRes))
{
pSvc->Release();
pLoc->Release();
CoUninitialize();
return -1;
}



BSTR query = SysAllocString(L"SELECT * FROM Win32_VideoController");
BSTR query_lang = SysAllocString(L"WQL");

IEnumWbemClassObject *pEnum;
IWbemClassObject *pObj;
ULONG ret_obj_count;
BSTR propName;
VARIANT propValue;

hRes = pSvc->ExecQuery( query_lang,
query,
WBEM_FLAG_USE_AMENDED_QUALIFIERS,
NULL,
&pEnum);

SysFreeString(query);
SysFreeString(query_lang);

if(FAILED(hRes))
{
TRACE("Failed to execute query!\n");
pSvc->Release();
pLoc->Release();
CoUninitialize();
return -1;
}

pEnum->Reset();

hRes = pEnum->Next( WBEM_INFINITE,
1,
&pObj,
&ret_obj_count );


if(FAILED(hRes) || 0 == ret_obj_count)
{
TRACE("Failed to execute query!\n");
pSvc->Release();
pLoc->Release();
CoUninitialize();
return -1;
}

hRes = pObj->BeginEnumeration(0);

if(FAILED(hRes))
{
pSvc->Release();
pLoc->Release();
CoUninitialize();
return -1;
}

hRes = 0;

while( !FAILED(hRes) && WBEM_S_NO_MORE_DATA != hRes )
{
hRes = pObj->Next( 0,
&propName,
&propValue,
0,
0 );
}

pObj->EndEnumeration();



pObj->Release();

pEnum->Release();


pSvc->Release();

pLoc->Release();
CoUninitialize();
Re: очень нужны сэмплы с использованием WMI
От: VVV Россия  
Дата: 26.04.04 13:09
Оценка:
Здравствуйте, 3pac, Вы писали:

3>чтобы они что нибудь детектили, желательно, какую нить виндовскую инфу. Курсовик(что то типа SYSINFO), и надо запостить сабж- удивить препода. Разбираться времени нет. Дайте плиз, если есть.


http://www.microsoft.com/technet/community/scriptcenter/tools/wmimatic.mspx

супер-тулза, генерит VBS скрипт, но перевести это на C++ — дело техники, зато можно очень просто выбрать, что смотреть.
Re[2]: очень нужны сэмплы с использованием WMI
От: 3pac  
Дата: 27.04.04 07:41
Оценка:
пасиба конечно, но я ВВасик не знаю совсем. Не видел в глаза ни разу
Re[2]: очень нужны сэмплы с использованием WMI
От: 3pac  
Дата: 27.04.04 07:47
Оценка:
Пасиба. А что делает этот сэмпл? Можно парочку комментов? Можно его как нибудь еще использовать?( типа подставлять другие имена классов, и получить, к примеру, скорость кулера). Что для этого нужно? Еще раз огромное спасибо.
Re[3]: очень нужны сэмплы с использованием WMI
От: Аноним  
Дата: 27.04.04 12:23
Оценка:
Здравствуйте, 3pac, Вы писали:

3>Пасиба. А что делает этот сэмпл? Можно парочку комментов?




while( !FAILED(hRes) && WBEM_S_NO_MORE_DATA != hRes )
{
hRes = pObj->Next( 0,
&propName,
&propValue,
0,
0 );
}



Просто перечисляет свойства Win32_VideoController




3>Можно его как нибудь еще использовать?


Можно пользуй


3>( типа подставлять другие имена классов, и получить, к примеру, скорость кулера). Что для этого нужно? Еще раз огромное спасибо.


для кулера можешь попробовать покрутить Win32_Fan
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.